mirror of
https://github.com/AxioDL/metaforce.git
synced 2025-12-09 04:27:42 +00:00
Work on character animation
This commit is contained in:
@@ -3,29 +3,43 @@
|
||||
namespace urde
|
||||
{
|
||||
|
||||
CSkinnedModel::CSkinnedModel(const TLockedToken<CModel>& model,
|
||||
const TLockedToken<CSkinRules>& skinRules,
|
||||
const TLockedToken<CCharLayoutInfo>& layoutInfo)
|
||||
CSkinnedModel::CSkinnedModel(TLockedToken<CModel> model,
|
||||
TLockedToken<CSkinRules> skinRules,
|
||||
TLockedToken<CCharLayoutInfo> layoutInfo,
|
||||
int shaderIdx)
|
||||
: x4_model(model), x10_skinRules(skinRules), x1c_layoutInfo(layoutInfo)
|
||||
{
|
||||
|
||||
m_modelInst = model->MakeNewInstance(shaderIdx);
|
||||
}
|
||||
|
||||
CSkinnedModel::CSkinnedModel(IObjectStore& store, ResId model,
|
||||
ResId skinRules, ResId layoutInfo,
|
||||
EDataOwnership ownership)
|
||||
int shaderIdx)
|
||||
: CSkinnedModel(store.GetObj(SObjectTag{FOURCC('CMDL'), model}),
|
||||
store.GetObj(SObjectTag{FOURCC('CSKR'), skinRules}),
|
||||
store.GetObj(SObjectTag{FOURCC('CINF'), layoutInfo}),
|
||||
shaderIdx)
|
||||
{
|
||||
}
|
||||
|
||||
void CSkinnedModel::Calculate(const CPoseAsTransforms& pose,
|
||||
const rstl::optional_object<CVertexMorphEffect>&)
|
||||
const CModelFlags& drawFlags,
|
||||
const rstl::optional_object<CVertexMorphEffect>& morphEffect,
|
||||
const float* morphMagnitudes)
|
||||
{
|
||||
m_modelInst->UpdateUniformData(drawFlags, x10_skinRules.GetObj(), &pose);
|
||||
}
|
||||
|
||||
void CSkinnedModel::Draw(const CModelFlags& drawFlags) const
|
||||
{
|
||||
if (m_modelInst->TryLockTextures())
|
||||
m_modelInst->DrawSurfaces(drawFlags);
|
||||
}
|
||||
|
||||
CMorphableSkinnedModel::CMorphableSkinnedModel(IObjectStore& store, ResId model,
|
||||
ResId skinRules, ResId layoutInfo,
|
||||
EDataOwnership ownership)
|
||||
: CSkinnedModel(store, model, skinRules, layoutInfo, ownership)
|
||||
int shaderIdx)
|
||||
: CSkinnedModel(store, model, skinRules, layoutInfo, shaderIdx)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user