Files
flightgear/3rdparty/osgXR/include/osgXR/MirrorSettings
2022-10-20 20:29:11 +08:00

73 lines
1.8 KiB
C++

// -*-c++-*-
// SPDX-License-Identifier: LGPL-2.1-only
// Copyright (C) 2021 James Hogan <james@albanarts.com>
#ifndef OSGXR_MirrorSettings
#define OSGXR_MirrorSettings 1
#include <osgXR/Export>
namespace osgXR {
class OSGXR_EXPORT MirrorSettings
{
public:
MirrorSettings();
/// Equality operator.
bool operator == (const MirrorSettings &other) const
{
return _mirrorMode == other._mirrorMode &&
(_mirrorMode != MIRROR_SINGLE ||
_mirrorViewIndex == other._mirrorViewIndex);
}
/// Inequality operator.
bool operator != (const MirrorSettings &other) const
{
return _mirrorMode != other._mirrorMode ||
(_mirrorMode == MIRROR_SINGLE &&
_mirrorViewIndex != other._mirrorViewIndex);
}
/// Type of VR mirror to show.
typedef enum MirrorMode
{
/// Choose automatically.
MIRROR_AUTOMATIC,
/// Render nothing to the mirror.
MIRROR_NONE,
/// Render a single view fullscreen to the mirror.
MIRROR_SINGLE,
/// Render left & right views side by side.
MIRROR_LEFT_RIGHT,
} MirrorMode;
/// Set the mirror mode to use.
void setMirror(MirrorMode mode, int viewIndex = -1)
{
_mirrorMode = mode;
_mirrorViewIndex = viewIndex;
}
/// Get the mirror mode to use.
MirrorMode getMirrorMode() const
{
return _mirrorMode;
}
/// Get the mirror view index.
int getMirrorViewIndex() const
{
return _mirrorViewIndex;
}
protected:
// Mirror mode
MirrorMode _mirrorMode;
int _mirrorViewIndex;
};
}
#endif