Advertisement
Guest User

KNX3 Loader

a guest
Feb 26th, 2020
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.48 KB | None | 0 0
  1. BOOL KNX3Mesh::Load( const NX3LoadPack * pLoadPack, KTemplateDataObject * pObject,  KNX3MtlChannel * pMtlChannel,int loadType  )
  2. {
  3.     DWORD dwTime  = GetMilliSecond();
  4.  
  5.     KSimpleDataObject *pMeshName = pObject->GetSimpleDataMemberObject( "mesh_name" );
  6.     char name[1024];
  7.     int namelen = 1024;
  8.     pMeshName->GetString( name, namelen );
  9.     m_sMeshName = name;
  10.    
  11.     int nMtlID;
  12.     KSimpleDataObject * pMtlID = pObject->GetSimpleDataMemberObject("material_id");
  13.     pMtlID->GetDWORD(reinterpret_cast<DWORD *>(&nMtlID) );
  14.    
  15.     if(pMtlChannel)
  16.         m_pMtl = pMtlChannel->GetMtl(nMtlID);
  17.     else
  18.         m_pMtl = NULL;
  19.  
  20.     DWORD dwMeshSize;
  21.     KSimpleDataObject * pMeshBlockSize = pObject->GetSimpleDataMemberObject("mesh_block_size");
  22.     pMeshBlockSize->GetDWORD(&dwMeshSize);
  23.  
  24.     KTemplateDataArrayObject * pMeshBlockArray = pObject->GetTemplateDataArrayMemberObject("mesh_block_array");
  25.  
  26.     // Mesh Data Load
  27.     int i;
  28.     for(i = 0; i < (int)dwMeshSize; ++i)
  29.     {
  30.         KNX3MeshElement* pElement = new KNX3MeshElement(m_pGraphics);
  31.         pElement->Load( pLoadPack, name, pMeshBlockArray->GetData(i), m_pMtl );
  32.         m_vtMeshElement.push_back(pElement);
  33.     }
  34.  
  35.     if ( dwMeshSize > 0 )
  36.     {
  37.         m_bIsEventPoint = m_vtMeshElement[0]->IsEventPoint();
  38.         m_bIsEventBox = m_vtMeshElement[0]->IsEventBox();
  39.     }
  40.  
  41.     // Animation & Visi Block Load
  42.     if(loadType == KNX3MeshChannel::LT_OLD_MESH)
  43.         loadAniAndVisiBlockOldType(pObject);
  44.     else
  45.         loadAniAndVisiBlockNewType(pObject);
  46.  
  47.        
  48.     // FX Load
  49.  
  50.     KTemplateDataArrayObject * pFXArray = pObject->GetTemplateDataArrayMemberObject("fx_array");
  51.  
  52.     for( i=0; i < pFXArray->GetDataCount(); ++i )
  53.     {
  54.         KNX3FX * pFX = new KNX3FX();
  55.         pFX->Load(pFXArray->GetData(i));
  56.         if ( pFX->IsFX() )
  57.             m_bIsFX = true;
  58.  
  59.         if ( pFX->GetFXElementSize() > 0 )
  60.         {
  61.             if ( pFX->GetFXElement( 0 )->GetValue( "UVTRANSFORM" ) != NULL )
  62.             {
  63.                 loadUVAni( pFX );
  64.             }
  65.         }
  66.  
  67.         m_vtFX.push_back(pFX);
  68.     }
  69.    
  70.     // Children Load
  71.     DWORD dwChildrenSize;
  72.     KSimpleDataObject * pMeshChildrenSize = pObject->GetSimpleDataMemberObject("mesh_children_size");
  73.     pMeshChildrenSize->GetDWORD(&dwChildrenSize);
  74.  
  75.     KTemplateDataArrayObject * pMeshChildrenArray = pObject->GetTemplateDataArrayMemberObject("mesh_children_array");
  76.  
  77.     for( i=0; i < (int)dwChildrenSize; ++i )
  78.     {
  79.         KNX3Mesh * pMesh = new KNX3Mesh(m_pGraphics);
  80.         pMesh->Load( pLoadPack, pMeshChildrenArray->GetData(i), pMtlChannel, loadType );
  81.         m_vtChildMesh.push_back(pMesh);
  82.     }
  83.  
  84. //  _oprint( "Load Time : KNX3Mesh::Load - %d\n", GetMilliSecond()-dwTime );
  85.  
  86.     return TRUE;
  87. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement