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