// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.
using UnityEngine;
namespace Microsoft.MixedReality.Toolkit.SpatialAwareness
{
public partial class SpatialAwarenessPlanarObject : BaseSpatialAwarenessObject
{
///
/// The BoxCollider associated with this plane's GameObject.
///
public BoxCollider Collider { get; set; }
private SpatialAwarenessSurfaceTypes planeType = SpatialAwarenessSurfaceTypes.Unknown;
///
/// The type of surface (ex: wall) represented by this object.
///
public SpatialAwarenessSurfaceTypes SurfaceType
{
get => planeType;
private set => planeType = value;
}
///
/// Constructor.
///
private SpatialAwarenessPlanarObject() : base() { }
///
/// Creates a .
///
///
/// SpatialAwarenessPlanarObject containing the fields that describe the plane.
///
public static SpatialAwarenessPlanarObject CreateSpatialObject(
Vector3 center,
Vector3 size,
Quaternion rotation,
int layer,
string name,
int planeId,
SpatialAwarenessSurfaceTypes surfaceType = SpatialAwarenessSurfaceTypes.Unknown)
{
SpatialAwarenessPlanarObject newPlane = new SpatialAwarenessPlanarObject();
newPlane.Id = planeId;
newPlane.SurfaceType = surfaceType;
GameObject planeObject = GameObject.CreatePrimitive(PrimitiveType.Cube);
planeObject.transform.position = center;
planeObject.transform.rotation = rotation;
planeObject.transform.localScale = size;
planeObject.name = name;
planeObject.layer = layer;
newPlane.GameObject = planeObject;
newPlane.Filter = newPlane.GameObject.GetComponent();
newPlane.Renderer = newPlane.GameObject.GetComponent();
newPlane.Renderer.shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.Off;
newPlane.Collider = newPlane.GameObject.GetComponent();
return newPlane;
}
}
}