sead
Loading...
Searching...
No Matches
aglLayer.h
Go to the documentation of this file.
1#pragma once
2
3#include <container/seadBuffer.h>
4#include <gfx/seadCamera.h>
5#include <gfx/seadColor.h>
6#include <gfx/seadProjection.h>
7#include <gfx/seadViewport.h>
8#include <heap/seadDisposer.h>
9#include <heap/seadHeap.h>
10#include <layer/aglLayerEnum.h>
11#include <layer/aglRenderStep.h>
12#include <prim/seadBitFlag.h>
13#include <prim/seadSafeString.h>
14
15namespace agl { namespace lyr {
16
17class DrawMethod;
18class Renderer;
19class RenderInfo;
20
21class Layer : public sead::IDisposer
22{
23public:
25 {
29 cClearFlag_Unk = 1 << 3 // Set in NSMBU, but never read by agl
30 };
31
32 friend ClearFlag operator|(const ClearFlag& lhs, const ClearFlag& rhs)
33 {
34 return (ClearFlag)((u32)lhs | (u32)rhs);
35 }
36
37 friend ClearFlag& operator|=(ClearFlag& lhs, const ClearFlag& rhs)
38 {
39 lhs = lhs | rhs;
40 return lhs;
41 }
42
43public:
45 ~Layer() override;
46
48
49 virtual u32 getRenderStepNum() const = 0;
50 virtual sead::SafeString getRenderStepName(s32 idx) const = 0;
51 virtual void initialize(sead::Heap* heap) { }
52 virtual void calc() { }
53 virtual void preDraw(const RenderInfo& render_info) const { }
54 virtual void postDraw(const RenderInfo& render_info) const { }
55 virtual bool isRenderStepGPUCalc(s32 idx) { return false; }
56 virtual bool isRenderStepNoDependency(s32 idx) { return false; }
57
58 DrawMethod* pushBackDrawMethod(u32 render_step, DrawMethod* p_method);
60
61 s32 removeDrawMethod(const DrawMethod* p_draw_method);
62 void removeDrawMethod(u32 render_step, const DrawMethod* p_draw_method);
63
64 void setCamera(sead::Camera* p_camera)
65 {
66 mpCamera = p_camera;
67 }
68
70 {
71 return mpCamera;
72 }
73
74 void setProjection(sead::Projection* p_projection)
75 {
76 mpProjection = p_projection;
77 }
78
80 {
81 return mpProjection;
82 }
83
85 {
86 mClearFlag.setDirect(flag);
87 }
88
90 {
91 return ClearFlag(mClearFlag.getDirect());
92 }
93
94 void setClearColorEnable(bool enable)
95 {
96 mClearFlag.change(cClearFlag_Color, enable);
97 }
98
100 {
101 return mClearFlag.isOn(cClearFlag_Color);
102 }
103
104 void setClearAlphaEnable(bool enable)
105 {
106 mClearFlag.change(cClearFlag_Alpha, enable);
107 }
108
110 {
111 return mClearFlag.isOn(cClearFlag_Alpha);
112 }
113
114 void setClearDepthEnable(bool enable)
115 {
116 mClearFlag.change(cClearFlag_Depth, enable);
117 }
118
120 {
121 return mClearFlag.isOn(cClearFlag_Depth);
122 }
123
125 {
126 return mRenderStep[i];
127 }
128
129 // ...
130
131protected:
134 sead::Viewport mScissor; // I think
149 u32 mDebugInfo[0x390 / sizeof(u32)]; // TODO: agl::lyr::Layer::DebugInfo
150};
151static_assert(sizeof(Layer) == 0x41C, "agl::lyr::Layer size mismatch");
152
153} }
Definition aglDrawMethod.h:12
Definition aglLayer.h:22
void setClearFlag(ClearFlag flag)
Definition aglLayer.h:84
virtual u32 getRenderStepNum() const =0
bool getClearColorEnable() const
Definition aglLayer.h:99
friend ClearFlag operator|(const ClearFlag &lhs, const ClearFlag &rhs)
Definition aglLayer.h:32
sead::BitFlag32 mClearFlag
Definition aglLayer.h:142
virtual void postDraw(const RenderInfo &render_info) const
Definition aglLayer.h:54
friend ClearFlag & operator|=(ClearFlag &lhs, const ClearFlag &rhs)
Definition aglLayer.h:37
virtual bool isRenderStepGPUCalc(s32 idx)
Definition aglLayer.h:55
sead::Buffer< RenderStep > mRenderStep
Definition aglLayer.h:147
~Layer() override
sead::BitFlag32 _50
Definition aglLayer.h:138
DrawMethod * pushBackDrawMethod(DrawMethod *p_method)
Definition aglLayer.cpp:16
u32 _68
Definition aglLayer.h:144
sead::BitFlag32 _4c
Definition aglLayer.h:137
DrawMethod * pushBackDrawMethod(u32 render_step, DrawMethod *p_method)
Definition aglLayer.cpp:7
DisplayType mDisplayType
Definition aglLayer.h:139
bool getClearAlphaEnable() const
Definition aglLayer.h:109
void setClearDepthEnable(bool enable)
Definition aglLayer.h:114
f32 mClearDepth
Definition aglLayer.h:146
sead::Projection * mpProjection
Definition aglLayer.h:136
sead::Projection * getProjection() const
Definition aglLayer.h:79
void removeDrawMethod(u32 render_step, const DrawMethod *p_draw_method)
Definition aglLayer.cpp:34
s32 mIndex
Definition aglLayer.h:143
u32 mRenderDisplayFlag
Definition aglLayer.h:140
void setClearAlphaEnable(bool enable)
Definition aglLayer.h:104
u32 _88
Definition aglLayer.h:148
ClearFlag getClearFlag() const
Definition aglLayer.h:89
virtual void calc()
Definition aglLayer.h:52
sead::Camera * mpCamera
Definition aglLayer.h:135
ClearFlag
Definition aglLayer.h:25
@ cClearFlag_Unk
Definition aglLayer.h:29
@ cClearFlag_Color
Definition aglLayer.h:26
@ cClearFlag_Depth
Definition aglLayer.h:28
@ cClearFlag_Alpha
Definition aglLayer.h:27
void setCamera(sead::Camera *p_camera)
Definition aglLayer.h:64
virtual void preDraw(const RenderInfo &render_info) const
Definition aglLayer.h:53
void setClearColorEnable(bool enable)
Definition aglLayer.h:94
sead::Camera * getCamera() const
Definition aglLayer.h:69
s32 removeDrawMethod(const DrawMethod *p_draw_method)
Definition aglLayer.cpp:25
sead::Viewport mViewport
Definition aglLayer.h:133
sead::Viewport mScissor
Definition aglLayer.h:134
Renderer * mpRenderer
Definition aglLayer.h:132
u32 mDisplayType2
Definition aglLayer.h:141
sead::Color4f mClearColor
Definition aglLayer.h:145
virtual sead::SafeString getRenderStepName(s32 idx) const =0
virtual void initialize(sead::Heap *heap)
Definition aglLayer.h:51
u32 mDebugInfo[0x390/sizeof(u32)]
Definition aglLayer.h:149
virtual bool isRenderStepNoDependency(s32 idx)
Definition aglLayer.h:56
RenderStep & getRenderStep(s32 i)
Definition aglLayer.h:124
void setProjection(sead::Projection *p_projection)
Definition aglLayer.h:74
bool getClearDepthEnable() const
Definition aglLayer.h:119
Definition aglRenderInfo.h:23
Definition aglRenderStep.h:12
Definition aglRenderer.h:28
Definition seadBuffer.h:13
Definition seadCamera.h:16
Definition seadHeap.h:23
Definition seadDisposer.h:12
Definition seadProjection.h:19
Definition seadViewport.h:10
Definition aglDrawMethod.cpp:4
DisplayType
Definition aglLayerEnum.h:8
Definition aglDisplayList.cpp:5
Definition seadAssert.h:44
BitFlag< u32 > BitFlag32
Definition seadBitFlag.h:125
SafeStringBase< char > SafeString
Definition seadSafeString.h:409
#define SEAD_RTTI_BASE(CLASS)
Definition seadRuntimeTypeInfo.h:75
Definition seadColor.h:9