mirror of
https://github.com/zeldaret/ss
synced 2026-09-07 03:00:21 -04:00
cec09ad023
* g3d Headers * initial g3d source files -- NOT YET FIXED * change ResFile static_cast to explicit ctor
64 lines
1.4 KiB
C++
64 lines
1.4 KiB
C++
#include "m/m3d/m_banm.h"
|
|
|
|
#include "m/m3d/m3d.h"
|
|
#include "m/m_heap.h"
|
|
|
|
namespace m3d {
|
|
banm_c::~banm_c() {
|
|
banm_c::remove();
|
|
}
|
|
|
|
void banm_c::remove() {
|
|
if (mpAnmObj != nullptr) {
|
|
mpAnmObj->DetachFromParent();
|
|
mpAnmObj->Destroy();
|
|
mpAnmObj = nullptr;
|
|
}
|
|
|
|
if (mpFrameHeap != nullptr) {
|
|
mHeap::destroyFrmHeap(mpFrameHeap);
|
|
mpFrameHeap = nullptr;
|
|
}
|
|
}
|
|
|
|
bool banm_c::createAllocator(mAllocator_c *alloc, u32 *pStart) {
|
|
// TODO understand this maybe?
|
|
int i1 = mHeap::frmHeapCost(*pStart, 0x20);
|
|
int i2 = mHeap::frmHeapCost(0, 0x20);
|
|
i2 = ROUND_UP(i1, 0x20) - i2;
|
|
i1 = mHeap::frmHeapCost(i2, 0x20);
|
|
*pStart = ROUND_UP(i1, 0x20);
|
|
mpFrameHeap = mHeap::createFrmHeap(
|
|
i2, (EGG::Heap *)alloc->mHeap, "アニメ切り替え用アロケータ(m3d::banm_c::m_heap)", internal::l_alignment, 0
|
|
);
|
|
mAllocator.attach(mpFrameHeap, 0x20);
|
|
return true;
|
|
}
|
|
|
|
bool banm_c::IsBound() const {
|
|
if (mpAnmObj == nullptr) {
|
|
return false;
|
|
}
|
|
return mpAnmObj->TestAnmFlag(nw4r::g3d::AnmObj::FLAG_ANM_BOUND);
|
|
}
|
|
|
|
void banm_c::play() {}
|
|
|
|
f32 banm_c::getFrame() const {
|
|
return mpAnmObj->GetFrame();
|
|
}
|
|
|
|
void banm_c::setFrameOnly(f32 frame) {
|
|
mpAnmObj->SetFrame(frame);
|
|
}
|
|
|
|
f32 banm_c::getRate() const {
|
|
return mpAnmObj->GetUpdateRate();
|
|
}
|
|
|
|
void banm_c::setRate(f32 f) {
|
|
mpAnmObj->SetUpdateRate(f);
|
|
}
|
|
|
|
} // namespace m3d
|