SMG-Decomp
A decompilation of Super Mario Galaxy 1
Loading...
Searching...
No Matches
VolumeModelDrawer.cpp
1#include "Game/LiveActor/VolumeModelDrawer.hpp"
2#include "Game/Scene/SceneObjHolder.hpp"
3#include "Game/System/ResourceHolder.hpp"
4#include "Game/Util/CameraUtil.hpp"
5#include "Game/Util/DrawUtil.hpp"
6#include "Game/Util/Functor.hpp"
7#include "Game/Util/ObjUtil.hpp"
8#include <cstdio>
9
10VolumeModelDrawInit::VolumeModelDrawInit() : NameObj("ボリュームモデル描画初期化") {
11 MR::FunctorV0F func(*MR::setupShadowVolumeDraw);
12 MR::registerPreDrawFunction(func, 0x1C);
13}
14
15VolumeModelDrawer::VolumeModelDrawer(const char *pName, const char *pFileName, MtxPtr mtx) : NameObj(pName) {
16 mMtx = 0;
17 mModelData = 0;
18 mColor.r = 0xFF;
19 mColor.g = 0xA9;
20 mColor.b = 0;
21 mColor.a = 0xFF;
22 MR::createSceneObj(SceneObj_VolumeModelDrawInit);
23 mMtx = mtx;
24 char buf[0x100];
25 snprintf(buf, 0x100, "%s.arc", pFileName);
26 ResourceHolder* resHolder = MR::createAndAddResourceHolder(buf);
27 mModelData = (J3DModelData*)resHolder->mModelResTable->getRes(pFileName);
28}
29
31 MR::loadProjectionMtx();
32 loadModelDrawMtx();
33 GXSetCurrentMtx(0);
34 GXSetColorUpdate(0);
35 GXSetAlphaUpdate(1);
36 GXSetDstAlpha(1, 0);
37 GXSetCullMode(GX_CULL_NONE);
38 GXColor color_1 = mColor;
39 GXSetTevColor(GX_TEVREG0, color_1);
40 GXSetZMode(0, GX_ALWAYS, 0);
41 GXSetBlendMode(GX_BM_BLEND, GX_BL_ONE, GX_BL_ZERO, GX_LO_COPY);
42 MR::drawSimpleModel(mModelData);
43 GXSetDstAlpha(0, 0);
44 GXSetZMode(1, GX_GEQUAL, 0);
45 GXSetCullMode(GX_CULL_FRONT);
46 GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_ZERO, GX_LO_COPY);
47 MR::drawSimpleModel(mModelData);
48 GXSetCullMode(GX_CULL_BACK);
49 GXSetBlendMode(GX_BM_SUBTRACT, GX_BL_ZERO, GX_BL_ZERO, GX_LO_COPY);
50 MR::drawSimpleModel(mModelData);
51 GXColor color_2 = mColor;
52 GXSetTevColor(GX_TEVREG0, color_2);
53 GXSetCullMode(GX_CULL_NONE);
54 GXSetBlendMode(GX_BM_BLEND, GX_BL_DSTALPHA, GX_BL_ONE, GX_LO_COPY);
55 GXSetColorUpdate(1);
56 GXSetDstAlpha(1, 0);
57 GXSetZMode(0, GX_ALWAYS, 0);
58 MR::drawSimpleModel(mModelData);
59}
60
61void VolumeModelDrawer::loadModelDrawMtx() const {
62 Mtx dest;
63 PSMTXConcat(MR::getCameraViewMtx(), mMtx, dest);
64 GXLoadPosMtxImm(dest, 0);
65}
66
67VolumeModelDrawer::~VolumeModelDrawer() {
68
69}
70
71VolumeModelDrawInit::~VolumeModelDrawInit() {
72
73}
The most basic form of an object.
Definition NameObj.hpp:11
virtual void draw() const
Draws the object. Does nothing until overridden.