diff options
Diffstat (limited to 'src/m/m3d/m_smdl.cpp')
| -rw-r--r-- | src/m/m3d/m_smdl.cpp | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/src/m/m3d/m_smdl.cpp b/src/m/m3d/m_smdl.cpp new file mode 100644 index 00000000..e5d96425 --- /dev/null +++ b/src/m/m3d/m_smdl.cpp @@ -0,0 +1,35 @@ +#include <m/m3d/m3d.h> +#include <m/m3d/m_smdl.h> +#include <nw4r/g3d/g3d_scnmdl.h> +#include <nw4r/g3d/g3d_scnmdlsmpl.h> + +namespace m3d { + +smdl_c::smdl_c() {} +smdl_c::~smdl_c() {} + +bool smdl_c::create(nw4r::g3d::ResMdl mdl, mAllocator_c *alloc, u32 bufferOption, int nView, u32 *pSize) { + if (alloc == nullptr) { + alloc = internal::l_allocator_p; + } + + u32 tmp; + if (pSize == nullptr) { + pSize = &tmp; + } + + if (bufferOption != 0) { + mpScnLeaf = nw4r::g3d::ScnMdl::Construct(alloc, pSize, mdl, bufferOption, nView); + } else { + mpScnLeaf = nw4r::g3d::ScnMdlSimple::Construct(alloc, pSize, mdl, nView); + } + + if (mpScnLeaf == nullptr) { + return false; + } + mpScnLeaf->SetPriorityDrawOpa(0x7f); + mpScnLeaf->SetPriorityDrawXlu(0x7f); + return true; +} + +} // namespace m3d |
