blob: d7b13ba76a2b9ea69ff3db3c5c6eb07bf7e1f095 [file]
// 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_OPENXR_SCENE_OBSERVER_H_
#define DEVICE_VR_OPENXR_OPENXR_SCENE_OBSERVER_H_
#include "base/check.h"
#include "base/memory/raw_ref.h"
#include "device/vr/openxr/openxr_extension_handle.h"
#include "device/vr/openxr/openxr_scene.h"
#include "device/vr/openxr/openxr_scene_bounds.h"
#include "device/vr/openxr/openxr_util.h"
namespace device {
// C++ wrapper for XrSceneObserverMSFT
class OpenXrSceneObserver {
public:
OpenXrSceneObserver(const device::OpenXrExtensionHelper& extensions,
XrSession session);
~OpenXrSceneObserver();
XrResult ComputeNewScene(
const std::vector<XrSceneComputeFeatureMSFT>& requested_features,
const OpenXrSceneBounds& bounds);
XrSceneComputeStateMSFT GetSceneComputeState() const;
bool IsSceneComputeCompleted() const;
std::unique_ptr<OpenXrScene> CreateScene() const;
XrSceneObserverMSFT Handle() const { return scene_observer_.get(); }
private:
const raw_ref<const device::OpenXrExtensionHelper> extensions_;
OpenXrExtensionHandle<XrSceneObserverMSFT> scene_observer_;
};
} // namespace device
#endif // DEVICE_VR_OPENXR_OPENXR_SCENE_OBSERVER_H_