NiTriBasedGeom * GetTriBasedGeomByHeadPart(BSFaceGenNiNode * faceNode, BGSHeadPart * headPart) { for (UInt32 p = 0; p < faceNode->m_children.m_size; p++) { NiAVObject * object = faceNode->m_children.m_data[p]; if (object && BSFixedString(object->m_name) == headPart->partName) { NiTriBasedGeom * geometry = object->GetAsNiTriBasedGeom(); if (geometry) { return geometry; } } } return NULL; }
NiTriBasedGeom * GetHeadTriBasedGeom(Actor * actor, UInt32 partType) { BSFaceGenNiNode * faceNode = actor->GetFaceGenNiNode(); TESNPC * actorBase = DYNAMIC_CAST(actor->baseForm, TESForm, TESNPC); if(faceNode && actorBase) { BGSHeadPart * facePart = actorBase->GetCurrentHeadPartByType(partType); if(facePart) { NiAVObject * headNode = faceNode->GetObjectByName(&facePart->partName.data); if(headNode) { NiTriBasedGeom * geometry = headNode->GetAsNiTriBasedGeom(); if(geometry) return geometry; } } } return NULL; }