void vHavokAiModule::GlobalsChunkFileExchange(VChunkFile &file, CHUNKIDTYPE iID) { const int sanity_number = 0xbaddda1a; char iLocalVersion = 2; if (file.IsLoading()) { // in loading mode, we receive this callback already when the chunk has been identified file.ReadChar(iLocalVersion); VASSERT(iLocalVersion<=2); int sanity_check; file.ReadInt(sanity_check); VASSERT(sanity_check == sanity_number); if (iLocalVersion >= 2) { bool bTmp; file.Readbool(bTmp); // determine if we want dynamic cutting SetConnectToPhysicsWorld(bTmp); } } else { file.StartChunk(iID); // in save mode, make a sub-chunk file.WriteChar(iLocalVersion); file.WriteInt(sanity_number); file.Writebool(m_connectToPhysicsWorld); // save out if we want dynamic cutting file.EndChunk(); } }
bool LightmapManager::LoadLightGridInfo(const char *szFilename) { VLightGrid_cl *pGrid = Vision::RenderLoopHelper.GetLightGrid(); if (!pLightGridInfo) pLightGridInfo = new LightGridTweakInfo(); pLightGridInfo->ReleaseColors(); VChunkFile loader; if (loader.Open(szFilename, Vision::File.GetManager())) { CHUNKIDTYPE iChunkID; while (loader.OpenChunk(&iChunkID)) { if (iChunkID=='LGIB') { loader.ReadInt(pLightGridInfo->m_iFlatColorCount); pLightGridInfo->m_pBaseColors = new hkvVec3[pLightGridInfo->m_iFlatColorCount]; loader.Read(pLightGridInfo->m_pBaseColors, pLightGridInfo->m_iFlatColorCount*sizeof(hkvVec3)); bLightGridBase = pLightGridInfo->m_bHasBase=true; } if (iChunkID=='LGIR') { loader.ReadInt(pLightGridInfo->m_iFlatColorCount); pLightGridInfo->m_pRadiosityColors = new hkvVec3[pLightGridInfo->m_iFlatColorCount]; loader.Read(pLightGridInfo->m_pRadiosityColors, pLightGridInfo->m_iFlatColorCount*sizeof(hkvVec3)); bLightGridRadiosity = pLightGridInfo->m_bHasRadiosity=true; } loader.EndChunk(); } loader.Close(); if (pLightGridInfo->m_iFlatColorCount>0) pLightGridInfo->m_pMixResult = new hkvVec3[pLightGridInfo->m_iFlatColorCount]; } else { // create a clone of the current light grid pLightGridInfo->FromLightGrid(pGrid); } return true; }
void VTextureWeightmapChannelResource::DetailTextureProperties_t::ChunkFileExchange(VChunkFile &file) { char szFilename[FS_MAX_PATH]; int iVersion = 7; if (file.IsLoading()) { int iDummy; file.ReadInt(iVersion); VASSERT(iVersion>=0 && iVersion<=7); file.ReadInt(m_iTextureID); if (iVersion>=5) file.ReadShort(m_iMaterialID); // version 5 if (iVersion<=2) { file.ReadInt(iDummy);//m_iResX file.ReadInt(iDummy);//m_iResY } else { // version 3 file.ReadFloat(m_fBakePriority); } if (iVersion>=4) file.Readbool(m_bUseClamping); if (iVersion>=7) file.Readbool(m_bHidden); if (iVersion>=2) file.Read(&m_vTilingAndOfs,sizeof(hkvVec4),"ffff"); else { file.Read(&m_vTilingAndOfs,sizeof(hkvVec2),"ff"); m_vTilingAndOfs.z = 0.f; m_vTilingAndOfs.w = 0.f; } if (iVersion>=6) file.Readbool(m_bUseThreeWayMapping); file.ReadString(szFilename,FS_MAX_PATH); if (szFilename[0]) m_spDiffuseTexture = Vision::TextureManager.Load2DTexture(szFilename, VTM_FLAG_DEFAULT_MIPMAPPED|VTM_FLAG_ASSUME_SRGB); if (iVersion>=1) { file.ReadString(szFilename,FS_MAX_PATH); if (szFilename[0]) m_spNormalmapTexture = Vision::TextureManager.Load2DTexture(szFilename); file.ReadString(szFilename,FS_MAX_PATH); if (szFilename[0]) m_spSpecularTexture = Vision::TextureManager.Load2DTexture(szFilename); } } else { file.WriteInt(iVersion); file.WriteInt(m_iTextureID); file.WriteShort(m_iMaterialID); // version 5 file.WriteFloat(m_fBakePriority); // version 3 file.Writebool(m_bUseClamping); // version 4 file.Writebool(m_bHidden); // version 7 file.Write(&m_vTilingAndOfs,sizeof(hkvVec4),"ffff"); // 4 floats: version 2 file.Writebool(m_bUseThreeWayMapping); if (m_spDiffuseTexture) file.WriteString(m_spDiffuseTexture->GetFilename()); else file.WriteString(NULL); if (m_spNormalmapTexture) file.WriteString(m_spNormalmapTexture->GetFilename()); else file.WriteString(NULL); if (m_spSpecularTexture) file.WriteString(m_spSpecularTexture->GetFilename()); else file.WriteString(NULL); } }