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();
	}
}
Esempio n. 2
0
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);
  }
}