Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- NiNode * rootNode = NULL;
- NiGeometry * newGeometry = NULL;
- UInt8 niStreamMemory[0x5B4];
- memset(niStreamMemory, 0, 0x5B4);
- NiStream * niStream = (NiStream *)niStreamMemory;
- CALL_MEMBER_FN(niStream, ctor)();
- BSFixedString armorName("Data\\Meshes\\TERAarmors\\castanic_f_h02\\cuirass_1.nif");
- NiNode * loadedRoot = thisObj->loadedState->node;
- BSFixedString rootNodeName("NPC Root [Root]");
- NiNode * npcRoot = loadedRoot->GetObjectByName(&rootNodeName.data)->GetAsNiNode();
- BSResourceNiBinaryStream binaryStream(armorName.data);
- if(binaryStream.IsValid()) {
- niStream->LoadStream(&binaryStream);
- if(niStream->m_rootObjects.m_data)
- {
- rootNode = niStream->m_rootObjects.m_data[0]->GetAsNiNode();
- if(rootNode) {
- for(UInt32 i = 0; i < rootNode->m_children.m_emptyRunStart; i++)
- {
- NiAVObject * childObject = rootNode->m_children.m_data[i];
- if(childObject) {
- NiTriShape * triShape = childObject->GetAsNiTriShape();
- if(triShape) {
- NiSkinInstance * skinInst = niptr_cast<NiSkinInstance>(triShape->m_spSkinInstance);
- if(skinInst) {
- NiSkinData * skinData = niptr_cast<NiSkinData>(skinInst->m_spSkinData);
- if(skinData) {
- for(UInt32 i = 0; i < skinData->m_uiBones; i++) {
- NiAVObject * localBone = skinInst->m_ppkBones[i];
- NiAVObject * boneOnRoot = npcRoot->GetObjectByName(&localBone->m_name);
- if(boneOnRoot) {
- skinInst->m_ppkBones[i] = boneOnRoot;
- skinInst->m_worldTransforms[i] = &boneOnRoot->m_worldTransform;
- } else {
- Console_Print("Bone Error: %s", localBone->m_name);
- skinInst->m_worldTransforms[i] = NULL;
- }
- }
- skinInst->m_uiBoneNodes = skinData->m_uiBones;
- }
- skinInst->m_pkRootParent = loadedRoot;
- }
- loadedRoot->AttachChild(triShape, true);
- NiAVObject::ControllerUpdateContext ctx;
- CALL_MEMBER_FN(triShape, UpdateNode)(&ctx);
- }
- }
- }
- NiAVObject::ControllerUpdateContext ctx;
- CALL_MEMBER_FN(loadedRoot, UpdateNode)(&ctx);
- }
- }
- }
- CALL_MEMBER_FN(niStream, dtor)();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement