CommonLibSSE (powerof3)
BSCullingProcess.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "RE/B/BSTArray.h"
6 #include "RE/N/NiSmartPointer.h"
7 
8 namespace RE
9 {
10  class BSCompoundFrustum;
11  class BSMultiBound;
12  class BSOcclusionPlane;
13  class NiAVObject;
14  class NiBound;
15 
17  {
18  public:
19  inline static constexpr auto RTTI = RTTI_BSCullingProcess;
20  inline static constexpr auto Ni_RTTI = NiRTTI_BSCullingProcess;
21  inline static constexpr auto VTABLE = VTABLE_BSCullingProcess;
22 
23  enum class BSCPCullingType
24  {
25  kNormal = 0,
26  kAllPass = 1,
27  kAllFail = 2,
30  };
31 
32  struct Data
33  {
34  public:
35  // members
36  std::uint8_t unk00[0x10]; // 00
37  };
38  static_assert(sizeof(Data) == 0x10);
39 
40  // override (NiCullingProcess)
41  const NiRTTI* GetRTTI() const override; // 00
42 
43  ~BSCullingProcess() override; // 15
44 
45  void Process1(NiAVObject* a_object, std::uint32_t a_arg2) override; // 16
46  void Process2(const NiCamera* a_camera, NiAVObject* a_scene, NiVisibleArray* a_visibleSet) override; // 17
47  void AppendVirtual(BSGeometry& a_visible, std::uint32_t a_arg2) override; // 18
48 
49  // add
50  virtual void AppendNonAccum(NiAVObject& a_object); // 19
51  virtual bool TestBaseVisibility1(BSMultiBound& a_bound); // 1A
52  virtual bool TestBaseVisibility2(BSOcclusionPlane& a_bound); // 1B
53  [[nodiscard]] virtual bool TestBaseVisibility3(const NiBound& a_bound) const; // 1C
54 
57  std::uint64_t unk30160; // 30160
58  std::uint64_t unk30168; // 30168
59  std::uint64_t unk30170; // 30170
60  std::uint64_t unk30178; // 30178
61  std::uint64_t unk30180; // 30180
62  std::uint64_t unk30188; // 30188
63  void* unk30190; // 30190
64  std::int32_t cullMode; // 30198
66  std::uint64_t unk301A8; // 301A8
67  std::uint64_t unk301B0; // 301B0
68  std::uint64_t unk301B8; // 301B8
69  std::uint64_t unk301C0; // 301C0
70  std::uint64_t unk301C8; // 301C8
71  std::uint32_t unk301D0; // 301D0
72  bool recurseToGeometry; // 301D4
73  std::uint8_t unk301D5; // 301D5
74  std::uint16_t unk301D6; // 301D6
76  std::uint64_t unk301F0; // 301F0
77  };
78  static_assert(sizeof(BSCullingProcess) == 0x301F8);
79 }
Definition: BSCompoundFrustum.h:12
Definition: BSCullingProcess.h:17
static constexpr auto RTTI
Definition: BSCullingProcess.h:19
std::uint64_t unk30170
Definition: BSCullingProcess.h:59
virtual bool TestBaseVisibility1(BSMultiBound &a_bound)
const NiRTTI * GetRTTI() const override
std::uint32_t unk301D0
Definition: BSCullingProcess.h:71
static constexpr auto VTABLE
Definition: BSCullingProcess.h:21
std::uint64_t unk301C8
Definition: BSCullingProcess.h:70
BSTArray< NiPointer< NiAVObject > > unk00128
Definition: BSCullingProcess.h:55
void AppendVirtual(BSGeometry &a_visible, std::uint32_t a_arg2) override
std::uint64_t unk30160
Definition: BSCullingProcess.h:57
BSCPCullingType
Definition: BSCullingProcess.h:24
BSTLocklessQueue::ObjMultiProdCons< Data, 4096, 0 > cullQueue
Definition: BSCullingProcess.h:56
std::int32_t cullMode
Definition: BSCullingProcess.h:64
std::uint16_t unk301D6
Definition: BSCullingProcess.h:74
BSTArray< void * > unk301D8
Definition: BSCullingProcess.h:75
std::uint64_t unk30180
Definition: BSCullingProcess.h:61
bool recurseToGeometry
Definition: BSCullingProcess.h:72
virtual bool TestBaseVisibility2(BSOcclusionPlane &a_bound)
static constexpr auto Ni_RTTI
Definition: BSCullingProcess.h:20
BSCompoundFrustum * compoundFrustum
Definition: BSCullingProcess.h:65
std::uint64_t unk301B8
Definition: BSCullingProcess.h:68
void * unk30190
Definition: BSCullingProcess.h:63
std::uint64_t unk30178
Definition: BSCullingProcess.h:60
std::uint64_t unk301F0
Definition: BSCullingProcess.h:76
void Process2(const NiCamera *a_camera, NiAVObject *a_scene, NiVisibleArray *a_visibleSet) override
std::uint64_t unk30188
Definition: BSCullingProcess.h:62
std::uint64_t unk301B0
Definition: BSCullingProcess.h:67
virtual bool TestBaseVisibility3(const NiBound &a_bound) const
virtual void AppendNonAccum(NiAVObject &a_object)
std::uint64_t unk301C0
Definition: BSCullingProcess.h:69
std::uint64_t unk30168
Definition: BSCullingProcess.h:58
std::uint64_t unk301A8
Definition: BSCullingProcess.h:66
std::uint8_t unk301D5
Definition: BSCullingProcess.h:73
void Process1(NiAVObject *a_object, std::uint32_t a_arg2) override
~BSCullingProcess() override
Definition: BSGeometry.h:15
Definition: BSMultiBound.h:12
Definition: BSOcclusionPlane.h:10
Definition: BSTArray.h:378
Definition: BSTLocklessQueue.h:28
Definition: NiAVObject.h:51
Definition: NiBound.h:8
Definition: NiCamera.h:11
Definition: NiCullingProcess.h:34
Definition: NiRTTI.h:6
Definition: AbsorbEffect.h:6
constexpr std::array< REL::ID, 1 > VTABLE_BSCullingProcess
Definition: Offsets_VTABLE.h:8982
constexpr REL::ID NiRTTI_BSCullingProcess(static_cast< std::uint64_t >(524626))
constexpr REL::ID RTTI_BSCullingProcess(static_cast< std::uint64_t >(685531))
Definition: BSCullingProcess.h:33
std::uint8_t unk00[0x10]
Definition: BSCullingProcess.h:36