diff options
| author | robojumper <robojumper@gmail.com> | 2024-09-12 22:36:34 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-09-12 16:36:34 -0400 |
| commit | 1180e1f4860d62bccd64bfa2a29eaeebd2c4b019 (patch) | |
| tree | ce6e231ef46aacbdad52ad7f6cbcd9d02dba555e /src/m/m3d/m_proc.cpp | |
| parent | e2c4bb7be7fa731a335bce4bc22283d899133e39 (diff) | |
m3d (#13)
* Initial M3d Pass
* `m_bmdl` and `m_bline` left
---------
Co-authored-by: elijah-thomas774 <elijahthomas774@gmail.com>
Co-authored-by: Elijah Thomas <42302100+elijah-thomas774@users.noreply.github.com>
Diffstat (limited to 'src/m/m3d/m_proc.cpp')
| -rw-r--r-- | src/m/m3d/m_proc.cpp | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/src/m/m3d/m_proc.cpp b/src/m/m3d/m_proc.cpp new file mode 100644 index 00000000..85ab31ec --- /dev/null +++ b/src/m/m3d/m_proc.cpp @@ -0,0 +1,46 @@ +#include <m/m3d/m3d.h> +#include <m/m3d/m_proc.h> +#include <nw4r/g3d/g3d_scnproc.h> + +namespace m3d { + +void proc_c_drawProc(nw4r::g3d::ScnProc *proc, bool b) { + proc_c *p = static_cast<proc_c *>(proc->GetUserData()); + if (b) { + p->drawOpa(); + } else { + p->drawXlu(); + } +} + +proc_c::~proc_c() {} + +int proc_c::getType() const { + return SCN_LEAF_PROC; +} + +void proc_c::drawOpa() {} +void proc_c::drawXlu() {} + +bool proc_c::create(mAllocator_c *alloc, u32 *pSize) { + if (alloc == nullptr) { + alloc = internal::l_allocator_p; + } + + u32 size; + if (pSize == nullptr) { + pSize = &size; + } + + mpScnLeaf = nw4r::g3d::ScnProc::Construct(alloc, pSize, proc_c_drawProc, true, true, 0); + if (!mpScnLeaf) { + return false; + } + + mpScnLeaf->SetPriorityDrawOpa(0x7f); + mpScnLeaf->SetPriorityDrawXlu(0x7f); + nw4r::g3d::G3dObj::DynamicCast<nw4r::g3d::ScnProc>(mpScnLeaf)->SetUserData(this); + return true; +} + +} // namespace m3d |
