summaryrefslogtreecommitdiff
path: root/src/egg/gfx/eggDrawPathBase.cpp
diff options
context:
space:
mode:
authorrobojumper <robojumper@gmail.com>2025-03-15 22:14:01 +0100
committerrobojumper <robojumper@gmail.com>2025-03-16 22:17:50 +0100
commit8759f710e57f66d035998428b8c864da80e36fd7 (patch)
tree8c4f8e6baa69c7129b4890f050ed58c63884d591 /src/egg/gfx/eggDrawPathBase.cpp
parent9b7889f03497dfae5792ee24803a80a7cb6a7281 (diff)
more
Diffstat (limited to 'src/egg/gfx/eggDrawPathBase.cpp')
-rw-r--r--src/egg/gfx/eggDrawPathBase.cpp43
1 files changed, 42 insertions, 1 deletions
diff --git a/src/egg/gfx/eggDrawPathBase.cpp b/src/egg/gfx/eggDrawPathBase.cpp
index e59be480..de88310e 100644
--- a/src/egg/gfx/eggDrawPathBase.cpp
+++ b/src/egg/gfx/eggDrawPathBase.cpp
@@ -1,3 +1,44 @@
#include "egg/gfx/eggDrawPathBase.h"
-namespace EGG {} // namespace EGG
+#include "common.h"
+#include "egg/gfx/eggIScnProc.h"
+#include "nw4r/g3d/g3d_scnobj.h"
+#include "nw4r/g3d/g3d_scnproc.h"
+
+namespace EGG {
+
+DrawPathBase::DrawPathBase() {}
+
+void DrawPathBase::createScnProc(MEMAllocator *allocator) {
+ IScnProc::createScnProc(getNumStep(), allocator);
+ for (u16 i = 0; i < getNumStep(); i++) {
+ getProc(i)->SetScnObjOption(nw4r::g3d::ScnObj::OPTION_DISABLE_UPDATEFRAME, true);
+ getProc(i)->SetScnObjOption(nw4r::g3d::ScnObj::OPTION_DISABLE_CALC_WORLD, true);
+ getProc(i)->SetScnObjOption(nw4r::g3d::ScnObj::OPTION_DISABLE_CALC_MAT, true);
+ getProc(i)->SetScnObjOption(nw4r::g3d::ScnObj::OPTION_DISABLE_CALC_VTX, true);
+ getProc(i)->SetScnObjOption(nw4r::g3d::ScnObj::OPTION_DISABLE_CALC_VIEW, true);
+ }
+ nw4r::g3d::ScnProc *p = getProc(0);
+ p->SetScnObjOption(nw4r::g3d::ScnObj::OPTION_DISABLE_CALC_VIEW, false);
+ p->EnableScnObjCallbackExecOp(nw4r::g3d::ScnObj::EXECOP_CALC_VIEW);
+ p->EnableScnObjCallbackTiming(nw4r::g3d::ScnObj::CALLBACK_TIMING_A);
+ p->DisableScnObjCallbackTiming(nw4r::g3d::ScnObj::CALLBACK_TIMING_B);
+ p->DisableScnObjCallbackTiming(nw4r::g3d::ScnObj::CALLBACK_TIMING_C);
+ p->SetCallback(this);
+}
+
+void DrawPathBase::ExecCallback_CALC_VIEW(
+ nw4r::g3d::ScnObj::Timing timing, nw4r::g3d::ScnObj *pObj, u32 param, void *pInfo
+) {
+ if (mFlag & 1) {
+ internalResetForDraw();
+ }
+}
+
+void DrawPathBase::scnProcDraw(u16) {
+ if (mFlag & 1) {
+ internalDraw();
+ }
+}
+
+} // namespace EGG