CommonLibSSE (powerof3)
ExtraFlags.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "RE/B/BSExtraData.h"
4 #include "RE/E/ExtraDataTypes.h"
5 
6 namespace RE
7 {
8  class ExtraFlags : public BSExtraData
9  {
10  public:
11  inline static constexpr auto RTTI = RTTI_ExtraFlags;
12  inline static constexpr auto VTABLE = VTABLE_ExtraFlags;
13  inline static constexpr auto EXTRADATATYPE = ExtraDataType::kFlags;
14 
15  enum class Flag
16  {
17  kNone = 0,
18  kBlockActivate = 1 << 0,
19  kBlockPlayerActivate = 1 << 1,
20  kBlockLoadEvents = 1 << 2,
21  kBlockActivateText = 1 << 3,
22  kPlayerHasTaken = 1 << 5
23  };
24 
25  ~ExtraFlags() override; // 00
26 
27  // override (BSExtraData)
28  [[nodiscard]] ExtraDataType GetType() const override; // 01 - { return kFlags; }
29 
30  [[nodiscard]] constexpr bool IsActivationBlocked() const noexcept { return flags.all(Flag::kBlockActivate); }
31 
32  // members
34  std::uint32_t pad14; // 14
35  };
36  static_assert(sizeof(ExtraFlags) == 0x18);
37 }
constexpr bool all(Args... a_args) const noexcept requires(std
Definition: EnumSet.h:99
Definition: BSExtraData.h:9
Definition: ExtraFlags.h:9
static constexpr auto VTABLE
Definition: ExtraFlags.h:12
static constexpr auto EXTRADATATYPE
Definition: ExtraFlags.h:13
~ExtraFlags() override
Flag
Definition: ExtraFlags.h:16
static constexpr auto RTTI
Definition: ExtraFlags.h:11
REX::EnumSet< Flag, std::uint32_t > flags
Definition: ExtraFlags.h:33
std::uint32_t pad14
Definition: ExtraFlags.h:34
ExtraDataType GetType() const override
constexpr bool IsActivationBlocked() const noexcept
Definition: ExtraFlags.h:30
Definition: AbsorbEffect.h:6
constexpr std::array< REL::ID, 1 > VTABLE_ExtraFlags
Definition: Offsets_VTABLE.h:11526
constexpr REL::ID RTTI_ExtraFlags(static_cast< std::uint64_t >(684698))
ExtraDataType
Definition: ExtraDataTypes.h:173