From 1180e1f4860d62bccd64bfa2a29eaeebd2c4b019 Mon Sep 17 00:00:00 2001 From: robojumper Date: Thu, 12 Sep 2024 22:36:34 +0200 Subject: m3d (#13) * Initial M3d Pass * `m_bmdl` and `m_bline` left --------- Co-authored-by: elijah-thomas774 Co-authored-by: Elijah Thomas <42302100+elijah-thomas774@users.noreply.github.com> --- src/m/m3d/m_proc.cpp | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 src/m/m3d/m_proc.cpp (limited to 'src/m/m3d/m_proc.cpp') 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 +#include +#include + +namespace m3d { + +void proc_c_drawProc(nw4r::g3d::ScnProc *proc, bool b) { + proc_c *p = static_cast(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(mpScnLeaf)->SetUserData(this); + return true; +} + +} // namespace m3d -- cgit v1.2.3