New Super Mario Bros. U Headers
Loading...
Searching...
No Matches
RenderObjRenderMgr.h
Go to the documentation of this file.
1#pragma once
2
3#include <graphics/ModelEnvView.h>
4
5#include <common/aglTextureSampler.h>
6#include <container/seadBuffer.h>
7#include <container/seadListImpl.h>
8#include <container/seadPtrArray.h>
9#include <environment/aglEnvObjMgr.h>
10#include <gfx/seadCamera.h>
11#include <gfx/seadProjection.h>
12#include <heap/seadDisposer.h>
13#include <layer/aglRenderInfo.h>
14#include <math/seadMatrix.h>
15#include <prim/seadNamable.h>
16#include <shadow/aglDepthShadow.h>
17
18class CullViewFrustum;
19class RenderObj;
21
22class RenderObjRenderMgr : public sead::IDisposer, public sead::INamable // vtbl Address: 0x100BDBA4
23{
24public:
25 struct ViewInfo
26 {
32 void* _7c; // pointer to struct of two f32 and one sead::Color4f for fog color
33 };
34 static_assert(sizeof(ViewInfo) == 0x80);
35
37 {
38 public:
39 virtual void preDrawOpa(s32 view_index, s32 buffer_index, const agl::lyr::RenderInfo& render_info) = 0;
40 virtual void preDrawXlu(s32 view_index, s32 buffer_index, const agl::lyr::RenderInfo& render_info) = 0;
41 virtual void postDrawOpa(s32 view_index, s32 buffer_index, const agl::lyr::RenderInfo& render_info) = 0;
42 virtual void postDrawXlu(s32 view_index, s32 buffer_index, const agl::lyr::RenderInfo& render_info) = 0;
43 };
44
45public:
46 // Address: 0x024FAF58
47 RenderObjRenderMgr(const sead::SafeString& name);
48 // Address: 0x024FB0AC
50
51 // Address: 0x024FB128
52 void initialize(s32 view_max_num, s32 render_obj_max_num, s32 opa_buffer_max_num, s32 xlu_buffer_max_num, sead::Heap* heap);
53 // Address: 0x024FB964
54 void initialize(s32 view_max_num, s32 render_obj_max_num, s32 opa_buffer_alloc_num, s32 opa_buffer_max_num, s32 xlu_buffer_max_num, sead::Heap* heap);
55
56 // Address: 0x024FBEAC
57 bool isFull() const;
58
59 // Address: 0x024FBEC8
61
62 // Address: 0x024FBED0
63 void clear();
64
65 // Address: 0x024FBF6C
66 void calcView(s32 view_index, const sead::Camera& camera, const sead::Projection& projection, const sead::Matrix44f* depth_shadow_mtx, const CullViewFrustum* cull, void* param_6);
67 // Address: 0x024FC090
68 void calcGPU(s32 view_index);
69 // Address: 0x024FC158
70 void drawOpa(s32 view_index, const agl::lyr::RenderInfo& render_info);
71 // Address: 0x024FC2A4
72 void drawXlu(s32 view_index, const agl::lyr::RenderInfo& render_info);
73 // Address: 0x024FC3F0
74 void drawShadowOpa(s32 view_index, const agl::lyr::RenderInfo& render_info);
75 // Address: 0x024FC48C
76 void drawReflectionOpa(s32 view_index, const agl::lyr::RenderInfo& render_info);
77 // Address: 0x024FC53C
78 void drawReflectionXlu(s32 view_index, const agl::lyr::RenderInfo& render_info);
79
80 // Address: 0x024FC5EC
81 void pushBackRenderObj(RenderObj* obj, s32 opa_buffer_index, s32 xlu_buffer_index);
82 // Address: 0x024FC71C
83 void pushBackRenderObj(RenderObj* obj, s32 opa_buffer_index, s32 xlu_buffer_index, const sead::Vector3f& order_pos);
84
85 // Address: 0x024FC738
87
88 // Address: 0x024FC798
89 void loadEnvRes(const void* file);
90
91 // Address: 0x024FC7EC
92 void calcViewShapeShadowFlags(agl::sdw::DepthShadow* depth_shadow, RenderObjLayerBase* shadow_layer);
93
94 ModelEnvView& getModelEnvView() { return mModelEnvView; }
95 const ModelEnvView& getModelEnvView() const { return mModelEnvView; }
96
98 void setDrawCallback(CallbackBase* callback) { mCallback = callback; }
99
100 agl::TextureSampler* getShadowMap() const { return mShadowMap; }
101 agl::TextureSampler* getReflectionMap() const { return mReflectionMap; }
102
103 void setShadowMap(agl::TextureSampler* sampler) { mShadowMap = sampler; }
104 void setReflectionMap(agl::TextureSampler* sampler) { mReflectionMap = sampler; }
105
106 agl::env::EnvObjMgr& getEnvObjMgr() { return mEnvObjMgr; }
107 const agl::env::EnvObjMgr& getEnvObjMgr() const { return mEnvObjMgr; }
108
109 ViewInfo& getViewInfo(s32 view_index) { return mViewInfo[view_index]; }
110 const ViewInfo& getViewInfo(s32 view_index) const { return mViewInfo[view_index]; }
111
112private:
113 // Address: 0x024FC084
115
116 // Address: 0x024FBF3C
117 static int compare_(const RenderObj* a, const RenderObj* b);
118
119private:
120 bool _18;
128 bool mDrawShadow; // I think
132 sead::ListNode mListNode; // For sead::OffsetList in LayerMgr
133};
134static_assert(sizeof(RenderObjRenderMgr) == 0x4D4);
Definition CullViewFrustum.h:16
Definition RenderObjLayer.h:8
Definition RenderObjRenderMgr.h:37
virtual void preDrawOpa(s32 view_index, s32 buffer_index, const agl::lyr::RenderInfo &render_info)=0
virtual void preDrawXlu(s32 view_index, s32 buffer_index, const agl::lyr::RenderInfo &render_info)=0
virtual void postDrawXlu(s32 view_index, s32 buffer_index, const agl::lyr::RenderInfo &render_info)=0
virtual void postDrawOpa(s32 view_index, s32 buffer_index, const agl::lyr::RenderInfo &render_info)=0
Definition RenderObjRenderMgr.h:23
void drawOpa(s32 view_index, const agl::lyr::RenderInfo &render_info)
void setDrawCallback(CallbackBase *callback)
Definition RenderObjRenderMgr.h:98
virtual ~RenderObjRenderMgr()
void pushBackRenderObj(RenderObj *obj, s32 opa_buffer_index, s32 xlu_buffer_index)
const ModelEnvView & getModelEnvView() const
Definition RenderObjRenderMgr.h:95
static int compare_(const RenderObj *a, const RenderObj *b)
ViewInfo & getViewInfo(s32 view_index)
Definition RenderObjRenderMgr.h:109
void calcViewShapeShadowFlags(agl::sdw::DepthShadow *depth_shadow, RenderObjLayerBase *shadow_layer)
void drawReflectionXlu(s32 view_index, const agl::lyr::RenderInfo &render_info)
void calcGPU(s32 view_index)
void drawReflectionOpa(s32 view_index, const agl::lyr::RenderInfo &render_info)
agl::env::EnvObjMgr & getEnvObjMgr()
Definition RenderObjRenderMgr.h:106
const ViewInfo & getViewInfo(s32 view_index) const
Definition RenderObjRenderMgr.h:110
bool mDrawShadow
Definition RenderObjRenderMgr.h:128
bool isFull() const
const agl::env::EnvObjMgr & getEnvObjMgr() const
Definition RenderObjRenderMgr.h:107
CallbackBase * mCallback
Definition RenderObjRenderMgr.h:127
sead::Buffer< ViewInfo > mViewInfo
Definition RenderObjRenderMgr.h:131
sead::PtrArray< RenderObj > mRenderObj
Definition RenderObjRenderMgr.h:121
void initialize(s32 view_max_num, s32 render_obj_max_num, s32 opa_buffer_max_num, s32 xlu_buffer_max_num, sead::Heap *heap)
void drawXlu(s32 view_index, const agl::lyr::RenderInfo &render_info)
sead::PtrArray< RenderObj > mRenderObjShadow
Definition RenderObjRenderMgr.h:124
agl::TextureSampler * mShadowMap
Definition RenderObjRenderMgr.h:129
void loadEnvRes(const void *file)
agl::TextureSampler * mReflectionMap
Definition RenderObjRenderMgr.h:130
agl::env::EnvObjMgr mEnvObjMgr
Definition RenderObjRenderMgr.h:125
agl::TextureSampler * getReflectionMap() const
Definition RenderObjRenderMgr.h:101
CallbackBase * getDrawCallback() const
Definition RenderObjRenderMgr.h:97
agl::TextureSampler * getShadowMap() const
Definition RenderObjRenderMgr.h:100
bool _18
Definition RenderObjRenderMgr.h:120
RenderObjRenderMgr(const sead::SafeString &name)
s32 createView(RenderObjLayerBase *layer)
void setShadowMap(agl::TextureSampler *sampler)
Definition RenderObjRenderMgr.h:103
void drawShadowOpa(s32 view_index, const agl::lyr::RenderInfo &render_info)
ModelEnvView mModelEnvView
Definition RenderObjRenderMgr.h:126
void initialize(s32 view_max_num, s32 render_obj_max_num, s32 opa_buffer_alloc_num, s32 opa_buffer_max_num, s32 xlu_buffer_max_num, sead::Heap *heap)
void calcView(s32 view_index, const sead::Camera &camera, const sead::Projection &projection, const sead::Matrix44f *depth_shadow_mtx, const CullViewFrustum *cull, void *param_6)
void setReflectionMap(agl::TextureSampler *sampler)
Definition RenderObjRenderMgr.h:104
sead::ListNode mListNode
Definition RenderObjRenderMgr.h:132
void pushBackRenderObj(RenderObj *obj, s32 opa_buffer_index, s32 xlu_buffer_index, const sead::Vector3f &order_pos)
ModelEnvView & getModelEnvView()
Definition RenderObjRenderMgr.h:94
Definition RenderObj.h:25
Definition RenderObjRenderMgr.h:26
sead::Matrix34f view_mtx
Definition RenderObjRenderMgr.h:28
sead::Matrix44f proj_mtx
Definition RenderObjRenderMgr.h:29
const sead::Matrix44f * depth_shadow_mtx
Definition RenderObjRenderMgr.h:30
RenderObjLayerBase * layer
Definition RenderObjRenderMgr.h:27
const CullViewFrustum * cull
Definition RenderObjRenderMgr.h:31
void * _7c
Definition RenderObjRenderMgr.h:32