NSMBW-Decomp
A decompilation of New Super Mario Bros. Wii
Loading...
Searching...
No Matches
banm.cpp
1#include <game/mLib/m_3d.hpp>
2#include <game/mLib/m_heap.hpp>
3#include <constants/sjis_constants.h>
4
6
7m3d::banm_c::~banm_c() {
8 banm_c::remove();
9}
10
11void m3d::banm_c::remove() {
12 if (mpObj != nullptr) {
13 mpObj->DetachFromParent();
14 mpObj->Destroy();
15 mpObj = nullptr;
16 }
17
18 if (mpHeap != nullptr) {
19 mHeap::destroyFrmHeap(mpHeap);
20 mpHeap = nullptr;
21 }
22}
23
24bool m3d::banm_c::createAllocator(mAllocator_c *allocator, size_t *size) {
25 size_t aligned = nw4r::ut::RoundUp(mHeap::frmHeapCost(*size, 0x20), 0x20) - mHeap::frmHeapCost(0, 0x20);
26 *size = nw4r::ut::RoundUp(mHeap::frmHeapCost(aligned, 0x20), 0x20);
27
28 mpHeap = mHeap::makeFrmHeap(aligned, allocator->mpHeap, M3D_BANM_HEAP_NAME, sHeapAlignment, 0);
29 mAllocator.attach(mpHeap, 0x20);
30 return true;
31}
32
33bool m3d::banm_c::IsBound() const {
34 if (mpObj == nullptr) {
35 return false;
36 }
37 return mpObj->TestAnmFlag(nw4r::g3d::AnmObj::IS_BOUND);
38}
39
40float m3d::banm_c::getFrame() const {
41 return mpObj->GetFrame();
42}
43
44void m3d::banm_c::setFrameOnly(float frame) {
45 mpObj->SetFrame(frame);
46}
47
48float m3d::banm_c::getRate() const {
49 return mpObj->GetUpdateRate();
50}
51
52void m3d::banm_c::setRate(float frame) {
53 mpObj->SetUpdateRate(frame);
54}
static u32 sHeapAlignment
Definition banm.hpp:51
T RoundUp(T x, u32 base)
Rounds x up to a multiple of base.
Definition inlines.hpp:21