/*
* Copyright (c) Meta Platforms, Inc. and affiliates.
* All rights reserved.
*
* Licensed under the Oculus SDK License Agreement (the "License");
* you may not use the Oculus SDK except in compliance with the License,
* which is provided at the time of installation or download, or which
* otherwise accompanies this software in either electronic or hard copy form.
*
* You may obtain a copy of the License at
*
* https://developer.oculus.com/licenses/oculussdk/
*
* Unless required by applicable law or agreed to in writing, the Oculus SDK
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
using System.Collections.Generic;
namespace Oculus.Interaction.Surfaces
{
///
/// An IClippedSurface is a specific type of in which the for both the
/// patch itself and its is the same, but where the solutions to spatial
/// queries against the ISurfacePatch itself are constrained by spatial constraints characterized as s.
/// The canonical (and most instructive) example of a TClipper is , which confines solutions
/// to spatial queries against an ISurface to an allowable region within certain spatial bounds; results outside of these bounds
/// will either be rejected outright (for example, for
/// queries) or "clamped" to within the acceptable region (for example, for
/// queries). In this way, an
/// IClippedSurface can be thought of as a larger surface which has been trimmed down or "clipped" to a subsection.
///
/// A type of "trimming" mechanism used to constrain the allowable region of an ISurface
public interface IClippedSurface : ISurfacePatch
{
///
/// Retrieves the list of "clipper" constraints which are used to confine the to
/// a specific allowable region which serves as the base of the .
/// As a colloquial example, if the backing surface were defined as a plane with origin _v_, and GetClippers returned a
/// constraint which mandated, "Only points within 10cm world space of _v_ are considered part of the surface," then the
/// itself would be defined as the region of the backing surface which lies within 10cm of _v_ in
/// world space.
///
///
/// The list of s which define the as a subset of its
/// .
///
IReadOnlyList GetClippers();
}
}