gsys: Add Model, ModelAccessKey and ModelUnit stubs

This commit is contained in:
Léo Lam
2022-03-31 12:48:14 +02:00
parent 6ce04bccaa
commit 9d02ca33d8
6 changed files with 210 additions and 0 deletions
+61
View File
@@ -0,0 +1,61 @@
#include "gsys/gsysModelAccessKey.h"
#include <basis/seadRawPrint.h>
#include <prim/seadMemUtil.h>
#include <prim/seadScopedLock.h>
#include "gsys/gsysModel.h"
namespace gsys {
IModelAccesssHandle::IModelAccesssHandle() = default;
IModelAccesssHandle::~IModelAccesssHandle() {
;
}
bool IModelAccesssHandle::search(const Model* p_model, const sead::SafeString& name) {
SEAD_ASSERT(p_model != nullptr);
SEAD_ASSERT_MSG(!sead::MemUtil::isStack(name.cstr()), "String[%s] is on stack.", name.cstr());
if (mModel != p_model) {
remove();
p_model->add_(this);
mModel = p_model;
}
mName = name;
return search();
}
void IModelAccesssHandle::remove() {
if (!mModel)
return;
auto lock = sead::makeScopedLock(mModel->getCS());
if (!mListNode.isLinked())
return;
SEAD_ASSERT(mModel != nullptr);
mModel->remove_(this);
mModel = nullptr;
removeImpl_();
}
bool IModelAccesssHandle::search() {
if (!mListNode.isLinked())
return false;
SEAD_ASSERT(mModel != nullptr);
return searchImpl_();
}
BoneAccessKeyEx::BoneAccessKeyEx() = default;
BoneAccessKeyEx::~BoneAccessKeyEx() {
remove();
}
void BoneAccessKeyEx::removeImpl_() {
mKey.reset();
}
} // namespace gsys