1#include <game/mLib/m_3d.hpp>
3#include <lib/nw4r/g3d/scn_mdl.hpp>
4#include <game/mLib/m_mtx.hpp>
6m3d::bmdl_c::~bmdl_c() {
10bool m3d::bmdl_c::getNodeWorldMtx(ulong idx, nw4r::math::MTX34 *mtx)
const {
11 nw4r::g3d::ScnMdlSimple *scnMdl = nw4r::g3d::G3dObj::DynamicCast<nw4r::g3d::ScnMdlSimple>(mpScn);
12 return scnMdl->GetScnMtxPos(mtx, nw4r::g3d::ScnObj::TYPE_UNK, idx);
15bool m3d::bmdl_c::getNodeWorldMtxMultVecZero(ulong idx, nw4r::math::VEC3 &vec)
const {
18 if (!getNodeWorldMtx(idx, &mtx)) {
26void m3d::bmdl_c::setAnm(m3d::banm_c &anm) {
28 nw4r::g3d::ScnMdl *scnMdl = nw4r::g3d::G3dObj::DynamicCast<nw4r::g3d::ScnMdl>(mpScn);
29 scnMdl->SetAnmObj(anm.getObj(), nw4r::g3d::ScnMdl::ANMOBJTYPE_NOT_SPECIFIED);
31 nw4r::g3d::ScnMdlSimple *scnMdl = nw4r::g3d::G3dObj::DynamicCast<nw4r::g3d::ScnMdlSimple>(mpScn);
32 if (anm.getType() == banm_c::TYPE_ANM_CHR) {
36 scnMdl->SetAnmObj(anm.getObj(), nw4r::g3d::ScnMdl::ANMOBJTYPE_NOT_SPECIFIED);
40void m3d::bmdl_c::play() {
41 if (mpAnm ==
nullptr) {
48nw4r::g3d::ResMdl m3d::bmdl_c::getResMdl()
const {
49 nw4r::g3d::ScnMdlSimple *scnMdl = nw4r::g3d::G3dObj::DynamicCast<nw4r::g3d::ScnMdlSimple>(mpScn);
50 return scnMdl->mpResMdl;
53nw4r::g3d::ResMat *m3d::bmdl_c::getResMat(ulong idx)
const {
54 nw4r::g3d::ScnMdlSimple *scnMdl = nw4r::g3d::G3dObj::DynamicCast<nw4r::g3d::ScnMdlSimple>(mpScn);
55 nw4r::g3d::ResMdl mdl = scnMdl->mpResMdl;
56 return mdl.GetResMat(idx);
59void m3d::bmdl_c::removeAnm(nw4r::g3d::ScnMdlSimple::AnmObjType objType) {
60 nw4r::g3d::ScnMdlSimple *scnMdl = nw4r::g3d::G3dObj::DynamicCast<nw4r::g3d::ScnMdlSimple>(mpScn);
61 if (objType == nw4r::g3d::ScnMdl::ANMOBJTYPE_CHR) {
65 scnMdl->RemoveAnmObj(objType);
68void m3d::bmdl_c::setTevColor(ulong idx, _GXTevRegID regID, _GXColor color,
bool markDirty) {
69 nw4r::g3d::ScnMdl *scnMdl = nw4r::g3d::G3dObj::DynamicCast<nw4r::g3d::ScnMdl>(mpScn);
70 if (scnMdl !=
nullptr) {
71 nw4r::g3d::ScnMdl::CopiedMatAccess cma(scnMdl, idx);
72 nw4r::g3d::ResMatTevColor tevColor = cma.GetResMatTevColor(markDirty);
74 tevColor.GXSetTevColor(regID, color);
75 tevColor.DCStore(
false);
77 nw4r::g3d::ResMat *resMat = getResMat(idx);
78 nw4r::g3d::ResMatTevColor tevColor = resMat->GetResMatTevColor();
80 tevColor.GXSetTevColor(regID, color);
81 tevColor.DCStore(
false);
85void m3d::bmdl_c::setTevColorAll(_GXTevRegID regID, _GXColor color,
bool markDirty) {
86 nw4r::g3d::ResMdl resMdl = getResMdl();
87 nw4r::g3d::ScnMdl *scnMdl = nw4r::g3d::G3dObj::DynamicCast<nw4r::g3d::ScnMdl>(mpScn);
88 if (scnMdl !=
nullptr) {
89 for (ulong i = 0; i < resMdl.GetResMatNumEntries(); i++) {
90 nw4r::g3d::ScnMdl::CopiedMatAccess cma(scnMdl, i);
91 nw4r::g3d::ResMatTevColor tevColor = cma.GetResMatTevColor(markDirty);
93 tevColor.GXSetTevColor(regID, color);
94 tevColor.DCStore(
false);
97 for (ulong i = 0; i < resMdl.GetResMatNumEntries(); i++) {
98 nw4r::g3d::ResMat *resMat = resMdl.GetResMat(i);
99 nw4r::g3d::ResMatTevColor tevColor = resMat->GetResMatTevColor();
101 tevColor.GXSetTevColor(regID, color);
102 tevColor.DCStore(
false);
107void m3d::bmdl_c::setTevKColor(ulong idx, _GXTevKColorID colID, _GXColor color,
bool markDirty) {
108 nw4r::g3d::ScnMdl *scnMdl = nw4r::g3d::G3dObj::DynamicCast<nw4r::g3d::ScnMdl>(mpScn);
109 if (scnMdl !=
nullptr) {
110 nw4r::g3d::ScnMdl::CopiedMatAccess cma(scnMdl, idx);
111 nw4r::g3d::ResMatTevColor tevColor = cma.GetResMatTevColor(markDirty);
113 tevColor.GXSetTevKColor(colID, color);
114 tevColor.DCStore(
false);
116 nw4r::g3d::ResMat *resMat = getResMat(idx);
117 nw4r::g3d::ResMatTevColor tevColor = resMat->GetResMatTevColor();
119 tevColor.GXSetTevKColor(colID, color);
120 tevColor.DCStore(
false);
124void m3d::bmdl_c::setTevKColorAll(_GXTevKColorID colID, _GXColor color,
bool markDirty) {
125 nw4r::g3d::ResMdl resMdl = getResMdl();
126 nw4r::g3d::ScnMdl *scnMdl = nw4r::g3d::G3dObj::DynamicCast<nw4r::g3d::ScnMdl>(mpScn);
127 if (scnMdl !=
nullptr) {
128 for (ulong i = 0; i < resMdl.GetResMatNumEntries(); i++) {
129 nw4r::g3d::ScnMdl::CopiedMatAccess cma(scnMdl, i);
130 nw4r::g3d::ResMatTevColor tevColor = cma.GetResMatTevColor(markDirty);
132 tevColor.GXSetTevKColor(colID, color);
133 tevColor.DCStore(
false);
136 for (ulong i = 0; i < resMdl.GetResMatNumEntries(); i++) {
137 nw4r::g3d::ResMat *resMat = resMdl.GetResMat(i);
138 nw4r::g3d::ResMatTevColor tevColor = resMat->GetResMatTevColor();
140 tevColor.GXSetTevKColor(colID, color);
141 tevColor.DCStore(
false);
146void m3d::bmdl_c::remove() {
@ TYPE_ANM_OTHER
Never used.
void multVecZero(nw4r::math::VEC3 &out) const
Extracts the translation vector from the matrix.