Implement GetLocatorTransform

This commit is contained in:
Phillip Stephens 2016-09-02 20:47:57 -07:00
parent ce3014b313
commit 8422ffb436
4 changed files with 22 additions and 4 deletions

View File

@ -35,7 +35,7 @@ void ViewManager::BuildTestPART(urde::IObjectStore& objStore)
CAnimRes samusAnimRes(samusCharSet.id, 2, zeus::CVector3f{2.f, 2.f, 2.f}, 0, true); CAnimRes samusAnimRes(samusCharSet.id, 2, zeus::CVector3f{2.f, 2.f, 2.f}, 0, true);
g_GameState->GetWorldTransitionManager()->EnableTransition(samusAnimRes, g_GameState->GetWorldTransitionManager()->EnableTransition(samusAnimRes,
platModel.id, zeus::CVector3f::skOne, platModel.id, zeus::CVector3f::skOne,
bgModel.id, zeus::CVector3f::skOne, false); bgModel.id, zeus::CVector3f::skOne, true);
#endif #endif
SObjectTag areaTag = m_projManager.TagFromPath( SObjectTag areaTag = m_projManager.TagFromPath(
@ -70,7 +70,7 @@ void ViewManager::BuildTestPART(urde::IObjectStore& objStore)
m_videoVoice = m_voiceEngine->allocateNewStereoVoice(32000, &m_voiceCallback); m_videoVoice = m_voiceEngine->allocateNewStereoVoice(32000, &m_voiceCallback);
m_videoVoice->start(); m_videoVoice->start();
//m_rootView->accessContentViews().clear(); m_rootView->accessContentViews().clear();
m_rootView->accessContentViews().push_back(m_particleView.get()); m_rootView->accessContentViews().push_back(m_particleView.get());
m_rootView->updateSize(); m_rootView->updateSize();
} }

View File

@ -178,12 +178,20 @@ void CAnimData::CalcPlaybackAlignmentParms(const CAnimPlaybackParms& parms,
zeus::CTransform CAnimData::GetLocatorTransform(CSegId id, const CCharAnimTime* time) const zeus::CTransform CAnimData::GetLocatorTransform(CSegId id, const CCharAnimTime* time) const
{ {
if (id == 0xFF)
return {}; return {};
zeus::CTransform ret;
if (!x220_31_poseCached)
const_cast<CAnimData*>(this)->RecalcPoseBuilder(time);
x2fc_poseBuilder.BuildTransform(id, ret);
return ret;
} }
zeus::CTransform CAnimData::GetLocatorTransform(const std::string& name, const CCharAnimTime* time) const zeus::CTransform CAnimData::GetLocatorTransform(const std::string& name, const CCharAnimTime* time) const
{ {
return {}; return GetLocatorTransform(xcc_layoutData->GetSegIdFromString(name), time);
} }
bool CAnimData::IsAnimTimeRemaining(float, const std::string& name) const bool CAnimData::IsAnimTimeRemaining(float, const std::string& name) const

View File

@ -16,6 +16,15 @@ zeus::CVector3f CCharLayoutInfo::GetFromParentUnrotated(const CSegId& id) const
} }
} }
CSegId CCharLayoutInfo::GetSegIdFromString(const std::string& name) const
{
auto it = x18_segIdMap.find(name);
if (it == x18_segIdMap.end())
return {};
return (*it).second;
}
void CCharLayoutNode::Bone::read(CInputStream& in) void CCharLayoutNode::Bone::read(CInputStream& in)
{ {
x0_parentId = CSegId(in); x0_parentId = CSegId(in);

View File

@ -37,6 +37,7 @@ public:
const std::shared_ptr<CCharLayoutNode>& GetRootNode() const {return x0_node;} const std::shared_ptr<CCharLayoutNode>& GetRootNode() const {return x0_node;}
const CSegIdList& GetSegIdList() const {return x8_segIdList;} const CSegIdList& GetSegIdList() const {return x8_segIdList;}
zeus::CVector3f GetFromParentUnrotated(const CSegId& id) const; zeus::CVector3f GetFromParentUnrotated(const CSegId& id) const;
CSegId GetSegIdFromString(const std::string& name) const;
}; };
CFactoryFnReturn FCharLayoutInfo(const SObjectTag&, CInputStream&, const CVParamTransfer&, CFactoryFnReturn FCharLayoutInfo(const SObjectTag&, CInputStream&, const CVParamTransfer&,