mirror of
https://github.com/zeldaret/ss
synced 2026-07-07 05:24:55 -04:00
cec09ad023
* g3d Headers * initial g3d source files -- NOT YET FIXED * change ResFile static_cast to explicit ctor
110 lines
2.6 KiB
C++
110 lines
2.6 KiB
C++
#include "m/m3d/m_scnleaf.h"
|
|
|
|
#include "m/m3d/m3d.h"
|
|
|
|
namespace m3d {
|
|
|
|
scnLeaf_c::scnLeaf_c() : mpScnLeaf(nullptr) {}
|
|
|
|
scnLeaf_c::~scnLeaf_c() {
|
|
scnLeaf_c::remove();
|
|
}
|
|
|
|
void scnLeaf_c::remove() {
|
|
if (mpScnLeaf != nullptr) {
|
|
mpScnLeaf->Destroy();
|
|
mpScnLeaf = nullptr;
|
|
}
|
|
}
|
|
|
|
int scnLeaf_c::entry() {
|
|
return pushBack(mpScnLeaf);
|
|
}
|
|
|
|
void scnLeaf_c::setOption(u32 flag, u32 set) {
|
|
mpScnLeaf->SetScnObjOption(flag, set);
|
|
}
|
|
|
|
void scnLeaf_c::setScale(f32 x, f32 y, f32 z) {
|
|
mpScnLeaf->SetScale(x, y, z);
|
|
}
|
|
|
|
void scnLeaf_c::setScale(const nw4r::math::VEC3 &scale) {
|
|
mpScnLeaf->SetScale(scale);
|
|
}
|
|
|
|
void scnLeaf_c::getScale(nw4r::math::VEC3 *vec) const {
|
|
mpScnLeaf->GetScale(vec);
|
|
}
|
|
|
|
void scnLeaf_c::setLocalMtx(const nw4r::math::MTX34 *mtx) {
|
|
mpScnLeaf->SetMtx(nw4r::g3d::ScnObj::MTX_LOCAL, mtx);
|
|
}
|
|
|
|
void scnLeaf_c::getLocalMtx(nw4r::math::MTX34 *mtx) const {
|
|
mpScnLeaf->GetMtx(nw4r::g3d::ScnObj::MTX_LOCAL, mtx);
|
|
}
|
|
|
|
const nw4r::math::MTX34 *scnLeaf_c::getLocalMtx() const {
|
|
return mpScnLeaf->GetMtxPtr(nw4r::g3d::ScnObj::MTX_LOCAL);
|
|
}
|
|
|
|
void scnLeaf_c::getWorldMtx(nw4r::math::MTX34 *mtx) const {
|
|
mpScnLeaf->GetMtx(nw4r::g3d::ScnObj::MTX_WORLD, mtx);
|
|
}
|
|
|
|
void scnLeaf_c::getViewMtx(nw4r::math::MTX34 *mtx) const {
|
|
mpScnLeaf->GetMtx(nw4r::g3d::ScnObj::MTX_VIEW, mtx);
|
|
}
|
|
|
|
// unofficial
|
|
void scnLeaf_c::setCallback(nw4r::g3d::IScnObjCallback *cb) {
|
|
mpScnLeaf->SetCallback(cb);
|
|
}
|
|
|
|
nw4r::g3d::IScnObjCallback *scnLeaf_c::swapCallback(nw4r::g3d::IScnObjCallback *cb) {
|
|
nw4r::g3d::IScnObjCallback *tmp = mpScnLeaf->GetScnObjCallback();
|
|
mpScnLeaf->SetCallback(cb);
|
|
return tmp;
|
|
}
|
|
|
|
void scnLeaf_c::enableCallbackTiming(nw4r::g3d::ScnObj::Timing timing) {
|
|
mpScnLeaf->EnableScnObjCallbackTiming(timing);
|
|
}
|
|
|
|
void scnLeaf_c::enableCallbackOp(nw4r::g3d::ScnObj::ExecOp op) {
|
|
mpScnLeaf->EnableScnObjCallbackExecOp(op);
|
|
}
|
|
|
|
void scnLeaf_c::calc(bool b) {
|
|
setOption(/* DISABLE_CALC_WORLD */ 0x02, false);
|
|
mpScnLeaf->G3dProc(1, 0, nullptr);
|
|
if (b == false) {
|
|
setOption(/* DISABLE_CALC_WORLD */ 0x02, true);
|
|
}
|
|
}
|
|
|
|
void scnLeaf_c::calcVtx(bool b) {
|
|
setOption(/* DISABLE_CALC_VTX */ 0x04, false);
|
|
mpScnLeaf->G3dProc(3, 0, nullptr);
|
|
if (b == false) {
|
|
setOption(/* DISABLE_CALC_VTX */ 0x04, true);
|
|
}
|
|
}
|
|
|
|
/** Unknown name/arg type */
|
|
void scnLeaf_c::calcView(void *p, bool b) {
|
|
setOption(/* DISABLE_CALC_VIEW */ 0x05, false);
|
|
mpScnLeaf->G3dProc(4, 0, p);
|
|
if (b == false) {
|
|
setOption(/* DISABLE_CALC_VIEW */ 0x05, true);
|
|
}
|
|
}
|
|
|
|
void scnLeaf_c::setPriorityDraw(int opa, int xlu) {
|
|
mpScnLeaf->SetPriorityDrawOpa(opa);
|
|
mpScnLeaf->SetPriorityDrawXlu(xlu);
|
|
}
|
|
|
|
} // namespace m3d
|