CommonLibVR
NiAlphaProperty.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "RE/N/NiProperty.h"
4 
5 namespace RE
6 {
7  class NiAlphaProperty : public NiProperty
8  {
9  public:
10  inline static constexpr auto RTTI = RTTI_NiAlphaProperty;
11  inline static constexpr auto Ni_RTTI = NiRTTI_NiAlphaProperty;
12  inline static constexpr auto VTABLE = VTABLE_NiAlphaProperty;
13 
14  enum class AlphaFunction
15  {
16  kOne,
17  kZero,
18  kSrcColor,
20  kDestColor,
22  kSrcAlpha,
24  kDestAlpha,
27  };
28 
29  enum class TestFunction
30  {
31  kAlways,
32  kLess,
33  kEqual,
34  kLessEqual,
35  kGreater,
36  kNotEqual,
38  kNever
39  };
40 
41  ~NiAlphaProperty() override; // 00
42 
43  // override (NiProperty)
44  const NiRTTI* GetRTTI() const override; // 02
45  NiObject* CreateClone(NiCloningProcess& a_cloning) override; // 17
46  void LoadBinary(NiStream& a_stream) override; // 18
47  void LinkObject(NiStream& a_stream) override; // 19 - { NiProperty::LinkObject(a_stream); }
48  bool RegisterStreamables(NiStream& a_stream) override; // 1A - { return NiProperty::RegisterStreamables(a_stream); }
49  void SaveBinary(NiStream& a_stream) override; // 1B
50  bool IsEqual(NiObject* a_object) override; // 1C
51  [[nodiscard]] Type GetType() const override; // 25 - { return Type::kAlpha; }
52 
53  [[nodiscard]] bool GetAlphaBlending() const;
54  [[nodiscard]] bool GetAlphaTesting() const;
55  [[nodiscard]] AlphaFunction GetDestBlendMode() const;
56  [[nodiscard]] AlphaFunction GetSrcBlendMode() const;
57  void SetAlphaBlending(bool a_enable);
58  void SetAlphaTesting(bool a_enable);
61 
62  // members
63  std::uint16_t alphaFlags; // 30
64  std::uint8_t alphaThreshold; // 32
65  std::uint8_t pad33; // 33
66  std::uint32_t pad34; // 34
67  private:
68  KEEP_FOR_RE()
69  };
70  static_assert(sizeof(NiAlphaProperty) == 0x38);
71 }
#define KEEP_FOR_RE()
Definition: PCH.h:713
Definition: NiAlphaProperty.h:8
std::uint16_t alphaFlags
Definition: NiAlphaProperty.h:63
void SetDestBlendMode(AlphaFunction a_mode)
bool GetAlphaBlending() const
void SetSrcBlendMode(AlphaFunction a_mode)
void LinkObject(NiStream &a_stream) override
void LoadBinary(NiStream &a_stream) override
NiObject * CreateClone(NiCloningProcess &a_cloning) override
bool RegisterStreamables(NiStream &a_stream) override
AlphaFunction GetSrcBlendMode() const
Type GetType() const override
static constexpr auto Ni_RTTI
Definition: NiAlphaProperty.h:11
AlphaFunction
Definition: NiAlphaProperty.h:15
AlphaFunction GetDestBlendMode() const
void SetAlphaTesting(bool a_enable)
bool GetAlphaTesting() const
static constexpr auto RTTI
Definition: NiAlphaProperty.h:10
std::uint8_t alphaThreshold
Definition: NiAlphaProperty.h:64
std::uint32_t pad34
Definition: NiAlphaProperty.h:66
std::uint8_t pad33
Definition: NiAlphaProperty.h:65
~NiAlphaProperty() override
TestFunction
Definition: NiAlphaProperty.h:30
void SaveBinary(NiStream &a_stream) override
const NiRTTI * GetRTTI() const override
static constexpr auto VTABLE
Definition: NiAlphaProperty.h:12
bool IsEqual(NiObject *a_object) override
void SetAlphaBlending(bool a_enable)
Definition: NiCloningProcess.h:10
Definition: NiObject.h:37
Definition: NiProperty.h:8
Type
Definition: NiProperty.h:15
Definition: NiRTTI.h:6
Definition: NiStream.h:29
Definition: AbsorbEffect.h:6
constexpr REL::ID RTTI_NiAlphaProperty(static_cast< std::uint64_t >(684913))
constexpr std::array< REL::ID, 1 > VTABLE_NiAlphaProperty
Definition: Offsets_VTABLE.h:12147
constexpr REL::ID NiRTTI_NiAlphaProperty(static_cast< std::uint64_t >(523931))