#include "CCharLayoutInfo.hpp" #include "CToken.hpp" namespace urde { zeus::CVector3f CCharLayoutInfo::GetFromParentUnrotated(const CSegId& id) const { const CCharLayoutNode::Bone& bone = x0_node->GetBoneMap()[id]; if (!x0_node->GetBoneMap().HasElement(bone.x0_parentId)) return bone.x4_origin; else { const CCharLayoutNode::Bone& pBone = x0_node->GetBoneMap()[bone.x0_parentId]; return bone.x4_origin - pBone.x4_origin; } } zeus::CVector3f CCharLayoutInfo::GetFromRootUnrotated(const CSegId& id) const { const CCharLayoutNode::Bone& bone = x0_node->GetBoneMap()[id]; return bone.x4_origin; } CSegId CCharLayoutInfo::GetSegIdFromString(std::string_view name) const { auto it = x18_segIdMap.find(name.data()); if (it == x18_segIdMap.end()) return {}; return (*it).second; } void CCharLayoutNode::Bone::read(CInputStream& in) { x0_parentId = CSegId(in); x4_origin.readBig(in); u32 chCount = in.readUint32Big(); x10_children.reserve(chCount); for (u32 i=0 ; i(in)), x8_segIdList(in) { atUint32 mapCount = in.readUint32Big(); for (atUint32 i=0 ; i::GetIObjObjectFor(std::make_unique(in)); } }