mirror of
https://github.com/AxioDL/PrimeWorldEditor.git
synced 2025-12-18 17:35:43 +00:00
CResource: Make BuildDependencyTree() return a unique_ptr
Makes the functions more memory safe in terms of freeing memory in exceptional paths .
This commit is contained in:
@@ -23,16 +23,16 @@ CGameArea::~CGameArea()
|
||||
delete mScriptLayers[iSCLY];
|
||||
}
|
||||
|
||||
CDependencyTree* CGameArea::BuildDependencyTree() const
|
||||
std::unique_ptr<CDependencyTree> CGameArea::BuildDependencyTree() const
|
||||
{
|
||||
// Base dependencies
|
||||
CAreaDependencyTree *pTree = new CAreaDependencyTree();
|
||||
auto pTree = std::make_unique<CAreaDependencyTree>();
|
||||
|
||||
std::set<CAssetID> MatTextures;
|
||||
mpMaterialSet->GetUsedTextureIDs(MatTextures);
|
||||
|
||||
for (auto Iter = MatTextures.begin(); Iter != MatTextures.end(); Iter++)
|
||||
pTree->AddDependency(*Iter);
|
||||
for (const auto& id : MatTextures)
|
||||
pTree->AddDependency(id);
|
||||
|
||||
pTree->AddDependency(mPathID);
|
||||
|
||||
@@ -43,8 +43,8 @@ CDependencyTree* CGameArea::BuildDependencyTree() const
|
||||
}
|
||||
|
||||
// Extra deps
|
||||
for (uint32 iDep = 0; iDep < mExtraAreaDeps.size(); iDep++)
|
||||
pTree->AddDependency(mExtraAreaDeps[iDep]);
|
||||
for (const auto& dep : mExtraAreaDeps)
|
||||
pTree->AddDependency(dep);
|
||||
|
||||
// Layer dependencies
|
||||
std::vector<CAssetID> DummyDeps;
|
||||
|
||||
@@ -65,9 +65,9 @@ class CGameArea : public CResource
|
||||
std::vector< std::vector<CAssetID> > mExtraLayerDeps;
|
||||
|
||||
public:
|
||||
CGameArea(CResourceEntry *pEntry = nullptr);
|
||||
explicit CGameArea(CResourceEntry *pEntry = nullptr);
|
||||
~CGameArea();
|
||||
CDependencyTree* BuildDependencyTree() const override;
|
||||
std::unique_ptr<CDependencyTree> BuildDependencyTree() const override;
|
||||
|
||||
void AddWorldModel(CModel *pModel);
|
||||
void MergeTerrain();
|
||||
|
||||
Reference in New Issue
Block a user