expired6978

NodeDump

May 29th, 2014
296
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.61 KB | None | 0 0
  1.  
  2. void DumpNodeChildren(NiAVObject * node)
  3. {
  4.     _MESSAGE("{%s} {%s} {%X}", node->GetRTTI()->name, node->m_name, node);
  5.     if(node->m_extraDataLen > 0) {
  6.         gLog.Indent();
  7.         for(UInt16 i = 0; i < node->m_extraDataLen; i++) {
  8.             _MESSAGE("{%s} {%s} {%X}", node->m_extraData[i]->GetRTTI()->name, node->m_extraData[i]->m_pcName, node);
  9.         }
  10.         gLog.Outdent();
  11.     }
  12.     //DumpClass(node);
  13.     NiNode * niNode = node->GetAsNiNode();
  14.     if(niNode && niNode->m_children.m_emptyRunStart > 0)
  15.     {
  16.         gLog.Indent();
  17.         for(int i = 0; i < niNode->m_children.m_emptyRunStart; i++)
  18.         {
  19.             NiAVObject * object = niNode->m_children.m_data[i];
  20.             if(object) {
  21.                 NiNode * childNode = object->GetAsNiNode();
  22.                 NiGeometry * geometry = object->GetAsNiGeometry();
  23.                 if(geometry) {
  24.                     _MESSAGE("{%s} {%s} {%X} Geometry", object->GetRTTI()->name, object->m_name, object);
  25.                     /*_MESSAGE("Flags: %08X", geometry->m_flags);
  26.                     if(NiGeometryData * geometryData = niptr_cast<NiGeometryData>(geometry->m_spModelData))
  27.                         _MESSAGE("GeoFlags: %08X", geometryData->m_usDataFlags);*/
  28.                     BSShaderProperty * shaderProperty = niptr_cast<BSShaderProperty>(geometry->m_spEffectState);
  29.                     if(shaderProperty->GetRTTI() == NiRTTI_BSLightingShaderProperty)
  30.                     {
  31.                         gLog.Indent();
  32.                         BSLightingShaderProperty * lightingShader = (BSLightingShaderProperty *)shaderProperty;
  33.                         BSLightingShaderMaterial * material = (BSLightingShaderMaterial *)shaderProperty->material;
  34.                         for(UInt32 i = 0; i < BSTextureSet::kNumTextures; i++)
  35.                         {
  36.                             const char * texturePath = material->textureSet->GetTexturePath(i);
  37.                             if(texturePath)
  38.                                 _MESSAGE("Texture %d: %s", i, texturePath);
  39.  
  40.                             //LPDIRECT3DTEXTURE9 pkD3DTexture = (LPDIRECT3DTEXTURE9)material->diffuse->rendererData->Unk_25();
  41.                             //DumpClass(pkD3DTexture, 24);
  42.                             /*std::string str("Data\\SKSE\\");
  43.                             str.append(object->m_name);
  44.                             char buff[16];
  45.                             sprintf_s(buff, "_%d", i);
  46.                             str.append(buff);
  47.                             str.append(".dds");
  48.                             //D3DXSaveTextureToFile(str.c_str(), D3DXIFF_DDS, pkD3DTexture, 0);
  49.                             SaveDDS(material->diffuse, str.c_str());*/
  50.                         }
  51.                         gLog.Outdent();
  52.                     }
  53.                 } else if(childNode) {
  54.                     DumpNodeChildren(childNode);
  55.                 } else {
  56.                     _MESSAGE("{%s} {%s} {%X}", object->GetRTTI()->name, object->m_name, object);
  57.                 }
  58.  
  59.                 if(object->m_extraDataLen > 0) {
  60.                     gLog.Indent();
  61.                     for(UInt16 i = 0; i < object->m_extraDataLen; i++) {
  62.                         _MESSAGE("{%s} {%s} {%X}", object->m_extraData[i]->GetRTTI()->name, object->m_extraData[i]->m_pcName, object);
  63.                     }
  64.                     gLog.Outdent();
  65.                 }
  66.             }
  67.         }
  68.         gLog.Outdent();
  69.     }
  70. }
Add Comment
Please, Sign In to add comment