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; }