Skip some files in ig build when possible

This commit is contained in:
kaetemi 2014-02-09 00:46:03 +01:00
parent 6d648fa433
commit 5a9fd95a12
3 changed files with 156 additions and 106 deletions

View file

@ -205,6 +205,7 @@ struct SOptions : public SExportOptions
{ {
CIXml xml (true); CIXml xml (true);
xml.init (fileIn); xml.init (fileIn);
ZoneRegionFile = filename;
ZoneRegion = new CZoneRegion; ZoneRegion = new CZoneRegion;
ZoneRegion->serial (xml); ZoneRegion->serial (xml);
} }

View file

@ -2402,6 +2402,24 @@ void CExport::transformCMB (const std::string &name, const NLMISC::CMatrix &tran
_ExportCB->dispWarning("Can't find " + cmbNoExtension + ".cmb"); _ExportCB->dispWarning("Can't find " + cmbNoExtension + ".cmb");
return; return;
} }
std::string outFileName = _Options->OutCMBDir +"/" + cmbNoExtension + ".cmb";
bool needUpdate = true;
if (CFile::fileExists(outFileName))
{
uint32 outModification = CFile::getFileModificationDate(outFileName);
needUpdate =
CFile::getFileModificationDate(cmbName) > outModification
|| (CFile::fileExists(_Options->HeightMapFile) && (CFile::getFileModificationDate(_Options->HeightMapFile) > outModification))
|| (CFile::fileExists(_Options->HeightMapFile2) && (CFile::getFileModificationDate(_Options->HeightMapFile2) > outModification))
|| (CFile::fileExists(_Options->ContinentFile) && (CFile::getFileModificationDate(_Options->ContinentFile) > outModification))
|| (CFile::fileExists(_Options->ZoneRegionFile) && (CFile::getFileModificationDate(_Options->ZoneRegionFile) > outModification));
}
if (needUpdate)
{
if (_ExportCB != NULL)
_ExportCB->dispInfo("UPDATE " + cmbName);
printf("UPDATE %s\n", cmbName.c_str());
CIFile inStream; CIFile inStream;
if (inStream.open(cmbName)) if (inStream.open(cmbName))
{ {
@ -2412,7 +2430,6 @@ void CExport::transformCMB (const std::string &name, const NLMISC::CMatrix &tran
// translate and save // translate and save
cmb.transform (transfo); cmb.transform (transfo);
COFile outStream; COFile outStream;
std::string outFileName = _Options->OutCMBDir +"/" + cmbNoExtension + ".cmb";
if (!outStream.open(outFileName)) if (!outStream.open(outFileName))
{ {
if (_ExportCB != NULL) if (_ExportCB != NULL)
@ -2453,6 +2470,13 @@ void CExport::transformCMB (const std::string &name, const NLMISC::CMatrix &tran
_ExportCB->dispWarning("Unable to open " + cmbName); _ExportCB->dispWarning("Unable to open " + cmbName);
} }
} }
else
{
if (_ExportCB != NULL)
_ExportCB->dispInfo("SKIP " + cmbName);
printf("SKIP %s\n", cmbName.c_str());
}
}
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
void CExport::transformAdditionnalIG (const std::string &name, const NLMISC::CMatrix &transfo, const NLMISC::CQuat &rotTransfo) const void CExport::transformAdditionnalIG (const std::string &name, const NLMISC::CMatrix &transfo, const NLMISC::CQuat &rotTransfo) const
@ -2471,6 +2495,24 @@ void CExport::transformAdditionnalIG (const std::string &name, const NLMISC::CMa
_ExportCB->dispWarning("Can't find " + igNoExtension + ".cmb"); _ExportCB->dispWarning("Can't find " + igNoExtension + ".cmb");
return; return;
} }
std::string outFileName = _Options->AdditionnalIGOutDir +"/" + igNoExtension + ".ig";
bool needUpdate = true;
if (CFile::fileExists(outFileName))
{
uint32 outModification = CFile::getFileModificationDate(outFileName);
needUpdate =
CFile::getFileModificationDate(igName) > outModification
|| (CFile::fileExists(_Options->HeightMapFile) && (CFile::getFileModificationDate(_Options->HeightMapFile) > outModification))
|| (CFile::fileExists(_Options->HeightMapFile2) && (CFile::getFileModificationDate(_Options->HeightMapFile2) > outModification))
|| (CFile::fileExists(_Options->ContinentFile) && (CFile::getFileModificationDate(_Options->ContinentFile) > outModification))
|| (CFile::fileExists(_Options->ZoneRegionFile) && (CFile::getFileModificationDate(_Options->ZoneRegionFile) > outModification));
}
if (needUpdate)
{
if (_ExportCB != NULL)
_ExportCB->dispInfo("UPDATE " + igName);
printf("UPDATE %s\n", igName.c_str());
CIFile inStream; CIFile inStream;
if (inStream.open(igName)) if (inStream.open(igName))
{ {
@ -2524,7 +2566,6 @@ void CExport::transformAdditionnalIG (const std::string &name, const NLMISC::CMa
igOut.enableRealTimeSunContribution(realTimeSuncontribution); igOut.enableRealTimeSunContribution(realTimeSuncontribution);
COFile outStream; COFile outStream;
std::string outFileName = _Options->AdditionnalIGOutDir +"/" + igNoExtension + ".ig";
if (!outStream.open(outFileName)) if (!outStream.open(outFileName))
{ {
if (_ExportCB != NULL) if (_ExportCB != NULL)
@ -2565,6 +2606,13 @@ void CExport::transformAdditionnalIG (const std::string &name, const NLMISC::CMa
_ExportCB->dispWarning("Unable to open " + igName); _ExportCB->dispWarning("Unable to open " + igName);
} }
} }
else
{
if (_ExportCB != NULL)
_ExportCB->dispInfo("SKIP " + igName);
printf("SKIP %s\n", igName.c_str());
}
}
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
void CExport::exportCMBAndAdditionnalIGs() void CExport::exportCMBAndAdditionnalIGs()

View file

@ -107,6 +107,7 @@ struct SExportOptions
// Options not saved // Options not saved
std::string ZoneRegionFile;
NLLIGO::CZoneRegion *ZoneRegion; // The region to make NLLIGO::CZoneRegion *ZoneRegion; // The region to make
float CellSize; float CellSize;
float Threshold; float Threshold;