An asset can only be considered synchronized when all required assets are synchronized

This commit is contained in:
Emil Axelsson
2017-12-07 11:07:15 +01:00
parent 175d21de9a
commit 9630e735db
5 changed files with 115 additions and 39 deletions
+10 -3
View File
@@ -81,7 +81,11 @@ public:
void setState(State state);
void addSynchronization(std::shared_ptr<ResourceSynchronization> synchronization);
std::vector<std::shared_ptr<ResourceSynchronization>> synchronizations() const;
std::vector<std::shared_ptr<ResourceSynchronization>> ownSynchronizations() const;
std::vector<std::shared_ptr<ResourceSynchronization>> requiredSynchronizations() const;
void syncStateChanged(std::shared_ptr<ResourceSynchronization> sync,
ResourceSynchronization::State s);
// Sync
bool isSynchronized();
@@ -103,10 +107,13 @@ public:
void request(std::shared_ptr<Asset> child);
void unrequest(std::shared_ptr<Asset> child);
std::vector<std::shared_ptr<Asset>> requestedAssets();
std::vector<std::shared_ptr<Asset>> requestingAssets();
std::vector<std::shared_ptr<Asset>> requiredAssets();
std::vector<std::shared_ptr<Asset>> requiringAssets();
std::vector<std::shared_ptr<Asset>> requiredSubTreeAssets();
std::vector<std::shared_ptr<Asset>> subTreeAssets();
std::vector<std::shared_ptr<Asset>> requestedAssets();
std::vector<std::shared_ptr<Asset>> requiredAssets();
std::vector<std::shared_ptr<Asset>> childAssets();
bool isRequired() const;
+4 -1
View File
@@ -69,9 +69,12 @@ public:
private:
std::shared_ptr<Asset> tryAddAsset(const std::string& path);
bool tryRemoveAsset(const std::string& path);
void assetStateChanged(Asset& asset, Asset::State state);
void assetStateChanged(std::shared_ptr<Asset> asset, Asset::State state);
std::unordered_map<std::string, bool> _pendingStateChangeCommands;
std::mutex _pendingInitializationsMutex;
std::vector<std::shared_ptr<Asset>> _pendingInitializations;
std::unique_ptr<AssetLoader> _assetLoader;
AssetLoader::CallbackHandle _addAssetCallbackHandle;
};