Added dependency tree system, methods for generating dependency trees from resources, and saving/loading dependency trees to the project cache folder

This commit is contained in:
parax0
2016-07-25 02:12:30 -06:00
parent c1405bfac1
commit 9341c11ac8
30 changed files with 886 additions and 56 deletions

View File

@@ -29,6 +29,31 @@ CModel::~CModel()
delete mMaterialSets[iMat];
}
CDependencyTree* CModel::BuildDependencyTree() const
{
CDependencyTree *pTree = new CDependencyTree(ResID());
for (u32 iSet = 0; iSet < mMaterialSets.size(); iSet++)
{
CMaterialSet *pSet = mMaterialSets[iSet];
for (u32 iMat = 0; iMat < pSet->NumMaterials(); iMat++)
{
CMaterial *pMat = pSet->MaterialByIndex(iMat);
pTree->AddDependency(pMat->IndTexture());
for (u32 iPass = 0; iPass < pMat->PassCount(); iPass++)
{
CMaterialPass *pPass = pMat->Pass(iPass);
pTree->AddDependency(pPass->Texture());
}
}
}
return pTree;
}
void CModel::BufferGL()
{
if (!mBuffered)

View File

@@ -25,6 +25,7 @@ public:
CModel(CMaterialSet *pSet, bool OwnsMatSet);
~CModel();
CDependencyTree* BuildDependencyTree() const;
void BufferGL();
void GenerateMaterialShaders();
void ClearGLBuffer();