chromium/device/vr/openxr/msft/openxr_scene_plane_msft.h

// Copyright 2021 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef DEVICE_VR_OPENXR_MSFT_OPENXR_SCENE_PLANE_MSFT_H_
#define DEVICE_VR_OPENXR_MSFT_OPENXR_SCENE_PLANE_MSFT_H_

#include "base/types/id_type.h"
#include "device/vr/openxr/msft/openxr_scene_object_msft.h"
#include "third_party/openxr/src/include/openxr/openxr.h"

namespace device {

struct OpenXrScenePlaneMsft {  // XR_SCENE_COMPONENT_TYPE_PLANE_MSFT
  using Id = base::StrongAlias<OpenXrScenePlaneMsft, XrUuidMSFT>;
  using Alignment = ::XrScenePlaneAlignmentTypeMSFT;
  using Extent = XrExtent2Df;
  OpenXrScenePlaneMsft(const XrSceneComponentMSFT& component,
                       const XrScenePlaneMSFT& plane);
  OpenXrScenePlaneMsft(const OpenXrScenePlaneMsft& other);
  ~OpenXrScenePlaneMsft();
  OpenXrScenePlaneMsft& operator=(const OpenXrScenePlaneMsft& other);

  OpenXrScenePlaneMsft::Id id_;
  OpenXrSceneObjectMsft::Id parent_id_;
  XrTime update_time_;
  Alignment alignment_;
  Extent size_;
  uint64_t mesh_buffer_id_;
  bool supports_indices_uint16_;
  XrSceneComponentLocationMSFT location_;
};

}  // namespace device

#endif  // DEVICE_VR_OPENXR_MSFT_OPENXR_SCENE_PLANE_MSFT_H_