This commit is contained in:
Aria 2025-03-21 22:23:30 +11:00
commit 9c94d113d3
Signed by untrusted user who does not match committer: aria
GPG key ID: 19AB7AA462B8AB3B
10260 changed files with 1237388 additions and 0 deletions

View file

@ -0,0 +1,41 @@
#ifndef STAR_DIRECTORY_ASSET_SOURCE_HPP
#define STAR_DIRECTORY_ASSET_SOURCE_HPP
#include "StarAssetSource.hpp"
#include "StarString.hpp"
namespace Star {
STAR_CLASS(DirectoryAssetSource);
class DirectoryAssetSource : public AssetSource {
public:
// Any file that forms an asset path that matches any of the patterns in
// 'ignorePatterns' is ignored.
DirectoryAssetSource(String const& baseDirectory, StringList const& ignorePatterns = {});
JsonObject metadata() const override;
StringList assetPaths() const override;
IODevicePtr open(String const& path) override;
ByteArray read(String const& path) override;
// Converts an asset path to the path on the filesystem
String toFilesystem(String const& path) const;
// Update metadata file or add a new one.
void setMetadata(JsonObject metadata);
private:
void scanAll(String const& assetDirectory, StringList& output) const;
String m_baseDirectory;
List<String> m_ignorePatterns;
Maybe<String> m_metadataFile;
JsonObject m_metadata;
StringList m_assetPaths;
};
}
#endif