made it work with new fpc
This commit is contained in:
@@ -55,6 +55,7 @@ public:
|
||||
virtual void ReadFromFile( CCompiledShader *pShader, const char *szFile ) override;
|
||||
};
|
||||
|
||||
IFileSystem *filesystem = NULL;
|
||||
void CCompiledShaderManager::WriteToFile( CCompiledShader *pShader, const char *szFile )
|
||||
{
|
||||
IFileHandle *pFile;
|
||||
@@ -68,8 +69,14 @@ void CCompiledShaderManager::WriteToFile( CCompiledShader *pShader, const char *
|
||||
stHeader.m_nNumLumps = pShader->m_lumps.GetSize();
|
||||
stHeader.m_nNumShaders = pShader->m_objects.GetSize();
|
||||
|
||||
if ( filesystem == NULL )
|
||||
{
|
||||
CreateInterfaceFn pFilesystemFactory = Sys_GetFactory("filesystem_std");
|
||||
filesystem = (IFileSystem*)pFilesystemFactory(FILESYSTEM_INTERFACE_VERSION, NULL);
|
||||
|
||||
}
|
||||
pFile = filesystem->Open(szFile, FILEMODE_WRITE);
|
||||
pFile->Write(&stHeader, sizeof(ShaderHeader_t));
|
||||
filesystem->Write(pFile, &stHeader, sizeof(ShaderHeader_t));
|
||||
|
||||
// We want to get offset for the lump data
|
||||
nTotalSize += sizeof(ShaderLump_t) * pShader->m_lumps.GetSize();
|
||||
@@ -82,7 +89,7 @@ void CCompiledShaderManager::WriteToFile( CCompiledShader *pShader, const char *
|
||||
ShaderLump_t stLump = {};
|
||||
stLump.m_nOffset = nTotalSize;
|
||||
stLump.m_nSize = l.m_nSize;
|
||||
pFile->Write(&stLump, sizeof(ShaderLump_t));
|
||||
filesystem->Write(pFile, &stLump, sizeof(ShaderLump_t));
|
||||
|
||||
nTotalSize += l.m_nSize;
|
||||
}
|
||||
@@ -97,11 +104,11 @@ void CCompiledShaderManager::WriteToFile( CCompiledShader *pShader, const char *
|
||||
// Lump Data
|
||||
for ( auto l: pShader->m_lumps )
|
||||
{
|
||||
pFile->Write(l.m_pAddress, l.m_nSize);
|
||||
filesystem->Write(pFile, l.m_pAddress, l.m_nSize);
|
||||
}
|
||||
|
||||
|
||||
pFile->Close();
|
||||
filesystem->Close(pFile);
|
||||
}
|
||||
|
||||
void CCompiledShaderManager::ReadFromFile( CCompiledShader *pShader, const char *szFile )
|
||||
@@ -114,27 +121,27 @@ void CCompiledShaderManager::ReadFromFile( CCompiledShader *pShader, const char
|
||||
CUtlVector<HostShaderLump_t> lumpsData = {};
|
||||
|
||||
pFile = filesystem->Open(szFile, FILEMODE_READ);
|
||||
pFile->Read(&stHeader, sizeof(ShaderHeader_t));
|
||||
filesystem->Read(pFile, &stHeader, sizeof(ShaderHeader_t));
|
||||
|
||||
objects.Resize(stHeader.m_nNumShaders);
|
||||
lumps.Resize(stHeader.m_nNumLumps);
|
||||
lumpsData.Resize(stHeader.m_nNumLumps);
|
||||
|
||||
pFile->Read(lumps.GetData(), stHeader.m_nNumLumps * sizeof(ShaderLump_t));
|
||||
pFile->Read(objects.GetData(), stHeader.m_nNumShaders * sizeof(ShaderObject_t));
|
||||
filesystem->Read(pFile, lumps.GetData(), stHeader.m_nNumLumps * sizeof(ShaderLump_t));
|
||||
filesystem->Read(pFile, objects.GetData(), stHeader.m_nNumShaders * sizeof(ShaderObject_t));
|
||||
|
||||
for ( i = 0; i < stHeader.m_nNumLumps; i++ )
|
||||
{
|
||||
lumpsData[i].m_pAddress = V_malloc(lumps[i].m_nSize);
|
||||
pFile->Seek(SEEKMODE_RELATIVE_START, lumps[i].m_nOffset);
|
||||
pFile->Read(lumpsData[i].m_pAddress, lumps[i].m_nSize);
|
||||
filesystem->Seek(pFile, SEEKMODE_RELATIVE_START, lumps[i].m_nOffset);
|
||||
filesystem->Read(pFile, lumpsData[i].m_pAddress, lumps[i].m_nSize);
|
||||
lumpsData[i].m_nSize = lumps[i].m_nSize;
|
||||
};
|
||||
|
||||
pShader->m_objects = objects;
|
||||
pShader->m_lumps = lumpsData;
|
||||
|
||||
pFile->Close();
|
||||
filesystem->Close(pFile);
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user