//////////////////////////////////////////////////////////////////////////// // // Crytek Engine Source File. // Copyright (C), Crytek Studios, 2002. // ------------------------------------------------------------------------- // File name: chunkfile.cpp // Version: v1.00 // Created: 15/12/2002 by Timur. // Compilers: Visual Studio.NET // Description: // ------------------------------------------------------------------------- // History: // //////////////////////////////////////////////////////////////////////////// #include "StdAfx.h" #include "ChunkFile.h" #include "CryHeaders.h" ////////////////////////////////////////////////////////////////////////// // CChunkFile implementation. ////////////////////////////////////////////////////////////////////////// CChunkFile::CChunkFile() { m_fileHeader.FileType = FileType_Geom; m_fileHeader.ChunkTableOffset = -1; m_fileHeader.Version = GeomFileVersion; strcpy(m_fileHeader.Signature,FILE_SIGNATURE); } ////////////////////////////////////////////////////////////////////////// CChunkFile::~CChunkFile() { } ////////////////////////////////////////////////////////////////////////// bool CChunkFile::Write( const char *filename ) { FILE *file = fopen( filename,"wb" ); if (!file) return false; unsigned i; fseek( file,sizeof(m_fileHeader),SEEK_SET ); for(i=0;iGetBuffer(),&ch.hdr,sizeof(ch.hdr) ); // write data. fwrite( ch.data->GetBuffer(),ch.data->GetSize(),1,file ); } int chunkTableOffset = ftell(file); //======================= //Write # of Chunks //======================= unsigned nch = m_chunks.size(); if (fwrite(&nch,sizeof(nch),1,file) !=1) return false; //======================= //Write Chunk List //======================= for(i=0;iAllocate( chunkSize ); chunk.data->Copy( chunkData,chunkSize ); int chunkID = m_chunks.size() + 1; chunk.hdr.ChunkID = chunkID; m_chunks.push_back( chunk ); return chunkID; }