mirror of
https://github.com/AxioDL/metaforce.git
synced 2025-12-21 02:19:11 +00:00
Begin transitioning to new CTexture; start Stream API
This commit is contained in:
@@ -14,71 +14,6 @@ class CCubeModel;
|
||||
class CCubeSurface;
|
||||
struct CModelFlags;
|
||||
|
||||
template <typename BitType>
|
||||
class Flags {
|
||||
public:
|
||||
using MaskType = typename std::underlying_type<BitType>::type;
|
||||
|
||||
// constructors
|
||||
constexpr Flags() noexcept : m_mask(0) {}
|
||||
|
||||
constexpr Flags(BitType bit) noexcept : m_mask(static_cast<MaskType>(bit)) {}
|
||||
|
||||
constexpr Flags(Flags<BitType> const& rhs) noexcept : m_mask(rhs.m_mask) {}
|
||||
|
||||
constexpr explicit Flags(MaskType flags) noexcept : m_mask(flags) {}
|
||||
|
||||
[[nodiscard]] constexpr bool IsSet(Flags<BitType> const bit) const noexcept { return bool(*this & bit); }
|
||||
|
||||
// relational operators
|
||||
auto operator<=>(Flags<BitType> const&) const noexcept = default;
|
||||
|
||||
// logical operator
|
||||
constexpr bool operator!() const noexcept { return !m_mask; }
|
||||
|
||||
// bitwise operators
|
||||
constexpr Flags<BitType> operator&(Flags<BitType> const& rhs) const noexcept {
|
||||
return Flags<BitType>(m_mask & rhs.m_mask);
|
||||
}
|
||||
|
||||
constexpr Flags<BitType> operator|(Flags<BitType> const& rhs) const noexcept {
|
||||
return Flags<BitType>(m_mask | rhs.m_mask);
|
||||
}
|
||||
|
||||
constexpr Flags<BitType> operator^(Flags<BitType> const& rhs) const noexcept {
|
||||
return Flags<BitType>(m_mask ^ rhs.m_mask);
|
||||
}
|
||||
|
||||
// assignment operators
|
||||
constexpr Flags<BitType>& operator=(Flags<BitType> const& rhs) noexcept {
|
||||
m_mask = rhs.m_mask;
|
||||
return *this;
|
||||
}
|
||||
|
||||
constexpr Flags<BitType>& operator|=(Flags<BitType> const& rhs) noexcept {
|
||||
m_mask |= rhs.m_mask;
|
||||
return *this;
|
||||
}
|
||||
|
||||
constexpr Flags<BitType>& operator&=(Flags<BitType> const& rhs) noexcept {
|
||||
m_mask &= rhs.m_mask;
|
||||
return *this;
|
||||
}
|
||||
|
||||
constexpr Flags<BitType>& operator^=(Flags<BitType> const& rhs) noexcept {
|
||||
m_mask ^= rhs.m_mask;
|
||||
return *this;
|
||||
}
|
||||
|
||||
// cast operators
|
||||
explicit constexpr operator bool() const noexcept { return m_mask != 0; }
|
||||
|
||||
explicit constexpr operator MaskType() const noexcept { return m_mask; }
|
||||
|
||||
private:
|
||||
MaskType m_mask;
|
||||
};
|
||||
|
||||
enum class CCubeMaterialFlagBits : u32 {
|
||||
fKonstValues = 0x8,
|
||||
fDepthSorting = 0x10,
|
||||
|
||||
Reference in New Issue
Block a user