Converted first thing to shared pointers.

This commit is contained in:
2023-11-02 20:35:11 -05:00
parent 5547c7c236
commit 0beb1d9cb7
17 changed files with 37 additions and 67 deletions

View File

@ -16,11 +16,7 @@ void AssetManager::update() {
}
void AssetManager::queueLoad(const std::vector<std::shared_ptr<Asset>> assets) {
std::merge(
this->assetsToLoad.begin(), this->assetsToLoad.end(),
assets.begin(), assets.end(),
this->assetsToLoad.begin()
);
assetsToLoad.insert(this->assetsToLoad.end(), assets.begin(), assets.end());
}
void AssetManager::queueLoad(const std::shared_ptr<Asset> &asset) {
@ -33,11 +29,7 @@ void AssetManager::queueUnload(
std::cout <<
"Asset list was queued to unload, but is not yet implemented" <<
std::endl;
std::merge(
this->assetsToUnload.begin(), this->assetsToUnload.end(),
assets.begin(), assets.end(),
this->assetsToUnload.begin()
);
assetsToUnload.insert(assetsToUnload.end(), assets.begin(), assets.end());
}
void AssetManager::queueUnload(const std::shared_ptr<Asset> &asset) {
@ -51,17 +43,17 @@ void AssetManager::queueSwap(
const std::vector<std::shared_ptr<Asset>> &newAssets,
const std::vector<std::shared_ptr<Asset>> &oldAssets
) {
std::vector<Asset*> unload;
std::vector<Asset*> load;
std::vector<std::shared_ptr<Asset>> unload;
std::vector<std::shared_ptr<Asset>> load;
// Determine assets to unload.
std::for_each(oldAssets.begin(), oldAssets.end(), [&](Asset *asset){
std::for_each(oldAssets.begin(), oldAssets.end(), [&](const auto &asset){
auto it = std::find(newAssets.begin(), newAssets.end(), asset);
if(it == newAssets.end()) unload.push_back(asset);
});
// Determine assets to load
std::for_each(newAssets.begin(), newAssets.end(), [&](Asset *asset){
std::for_each(newAssets.begin(), newAssets.end(), [&](const auto &asset){
auto it = std::find(oldAssets.begin(), oldAssets.end(), asset);
if(it == oldAssets.end()) load.push_back(asset);
});

View File

@ -90,9 +90,9 @@ namespace Dawn {
auto existing = this->assets.find(name);
if(existing != this->assets.end()) {
return (T*)existing->second;
return dynamic_pointer_cast<T>(existing->second);
}
auto asset = new T(name);
auto asset = std::make_shared<T>(name);
this->assets[name] = asset;
return asset;
}